Numpy数组拆分的实现步骤

 更新时间:2026年04月16日 10:05:13   作者:O_meGa  
本文详细介绍了NumPy库中的四个关键数组拆分函数:np.split、np.hsplit、np.vsplit和np.array_split,及如何根据索引位置进行等分或不等分拆分,感兴趣的可以了解一下

数组拆分允许我们根据指定的索引位置或者等份分割的方式将一个数组分解为多个子数组。主要使用的函数是numpy.splitnumpy.hsplitnumpy.vsplit,以及它们的等价函数numpy.array_split

np.split

numpy.split函数可以按指定的索引位置对数组进行分割,它接受一个数组和一个分割点列表作为参数,并返回一个包含分割后子数组的列表。

import numpy as np
# 创建一个一维数组
arr = np.arange(9)
print("Original array:")
print(arr)
# 按照索引位置分割数组
indices = [2, 5]
result = np.split(arr, indices)
for sub_arr in result:
    print("\nSplit Sub-array:")
    print(sub_arr)
# 输出:
# Original array:
# [0 1 2 3 4 5 6 7 8]
#
# Split Sub-array:
# [0 1]
#
# Split Sub-array:
# [2 3 4]
#
# Split Sub-array:
# [5 6 7 8]
# 对于二维数组,可以通过设置axis参数来控制分割方向
arr_2d = np.arange(12).reshape(3, 4)
print("\n2D Array:")
print(arr_2d)
# 沿着行(axis=0)方向分割
result_2d_rows = np.split(arr_2d, [1], axis=0)
for row_arr in result_2d_rows:
    print("\nSplit Row-subarray:")
    print(row_arr)
# 沿着列(axis=1)方向分割
result_2d_cols = np.split(arr_2d, [2], axis=1)
for col_arr in result_2d_cols:
    print("\nSplit Column-subarray:")
    print(col_arr)

输出:

2D Array:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

Split Row-subarray:
[[0 1 2 3]]

Split Row-subarray:
[[ 4  5  6  7]
 [ 8  9 10 11]]

Split Column-subarray:
[[0 1]
 [4 5]
 [8 9]]

Split Column-subarray:
[[ 2  3]
 [ 6  7]
 [10 11]]

np.hsplit

np.hsplit 用于沿数组的水平轴拆分数组,它是 np.split 的特殊情况,适用于二维数组。

# 创建一个二维数组 
arr_2d = np.arange(16).reshape(4, 4) 
print("Original 2D array:\n", arr_2d) 
# 水平拆分成 2 个子数组 
hsplit_arr = np.hsplit(arr_2d, 2) 
print("Horizontally split array:", hsplit_arr)

输出:

riginal 2D array: 
[[ 0 1  2  3 ] 
 [ 4 5  6  7 ] 
 [ 8 9  10 11] 
 [12 13 14 15]] 
Horizontally split array: 
[array([[ 0, 1], 
        [ 4, 5], 
        [ 8, 9], 
        [12, 13]]), 
 array([[ 2, 3 ], 
        [ 6, 7 ], 
        [10, 11], 
        [14, 15]])] 

np.vsplit

np.vsplit 用于沿数组的垂直轴拆分数组,它也是 np.split 的特殊情况。

# 垂直拆分成 2 个子数组 
vsplit_arr = np.vsplit(arr_2d, 2) 
print("Vertically split array:", vsplit_arr)

输出:

Vertically split array: 
[array([[0, 1, 2, 3], 
        [4, 5, 6, 7]]), 
 array([[ 8,  9, 10, 11], 
        [12, 13, 14, 15]])] 

np.array_split

np.array_split 允许进行不等分拆分,即子数组大小可以不一致。

# 创建一个数组 
arr = np.arange(7) 
print("Original array:", arr) 
# 不等分拆分成 3 个子数组 
array_split_arr = np.array_split(arr, 3) 
print("Array split into 3 parts:", array_split_arr)

输出:

Original array: [0 1 2 3 4 5 6] 
Array split into 3 parts: 
[array([0, 1, 2]), 
 array([3, 4]), 
 array([5, 6])] 

指定拆分位置

np.splitnp.hsplitnp.vsplit 中,您也可以通过一个包含索引的列表来指定拆分的具体位置。

# 创建一个二维数组 
arr_2d = np.arange(16).reshape(4, 4) 
print("Original 2D array:\n", arr_2d) 
# 指定位置水平拆分数组 
hsplit_arr_indices = np.hsplit(arr_2d, [3]) 
print("Horizontally split array at column index 3:", hsplit_arr_indices) 
# 指定位置垂直拆分数组 
vsplit_arr_indices = np.vsplit(arr_2d, [1]) 
print("Vertically split array at row index 1:", vsplit_arr_indices)

预期输出:

Original 2D array: 
[[ 0  1  2  3] 
 [ 4  5  6  7] 
 [ 8  9 10 11] 
 [12 13 14 15]]
Horizontally split array at column index 3: 
[array([[ 0,  1,  2], 
        [ 4,  5,  6], 
        [ 8,  9, 10], 
        [12, 13, 14]]), 
 array([[ 3], 
        [ 7], 
        [11], 
        [15]])] 
Vertically split array at row index 1: 
[array([[0, 1, 2, 3]]), 
 array([[ 4,  5,  6,  7], 
        [ 8,  9, 10, 11], 
        [12, 13, 14, 15]])]

到此这篇关于Numpy数组拆分的实现步骤的文章就介绍到这了,更多相关Numpy 数组拆分内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pandas读取并修改excel的示例代码

    Pandas读取并修改excel的示例代码

    这篇文章主要介绍了Pandas读取并修改excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 关于Python中object类特殊方法的解释

    关于Python中object类特殊方法的解释

    在学习Python的过程中我们会发现有一个类 Object类 ,它是所有类的父类,Object类规定了python用于类的内置函数,今天我们就来看看几个常用的特殊方法吧
    2023-03-03
  • Python从函数参数类型引出元组实例分析

    Python从函数参数类型引出元组实例分析

    这篇文章主要介绍了Python从函数参数类型引出元组,结合实例形式分析了Python函数定义与使用中常见的三种参数类型,并简单分析了元组类型参数的使用,需要的朋友可以参考下
    2019-05-05
  • python实现word/excel/ppt批量转pdf的示例代码

    python实现word/excel/ppt批量转pdf的示例代码

    这篇文章主要为大家详细介绍了如何利用python实现word、excel、ppt批量转pdf文件,文中的示例代码讲解详细,有需要的小伙伴可以参考下
    2023-09-09
  • pyshp创建shp点文件的方法

    pyshp创建shp点文件的方法

    今天小编就为大家分享一篇pyshp创建shp点文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 详解Python中namedtuple的使用

    详解Python中namedtuple的使用

    这篇文章主要介绍了Python中namedtuple的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python天气语音播报小助手

    Python天气语音播报小助手

    马上就要迎来国庆小长假了,激不激动,兴不兴奋!那今年国庆:天气怎么样?能不能出门逛街?能不能出去旅游?旅游出门就要挑个好的天气!下雨天哪儿哪儿都不舒服。今天小编带大家写一款Python天气语音播报小助手
    2021-09-09
  • 全面解析Python中的Scikit-learn强大工具

    全面解析Python中的Scikit-learn强大工具

    Scikit-learn是一个功能强大的Python机器学习库,提供了统一的接口实现各种机器学习算法,通过本文,你将了解如何安装和使用Scikit-learn,涵盖数据预处理、模型选择、训练和评估等步骤,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • 盘点提高 Python 代码效率的方法

    盘点提高 Python 代码效率的方法

    本人用 Python 快两年了,平时只是用它来写点小小的分析脚本,以方便快捷为主,也没怎么考虑代码效率问题。最近想给自己升升级,提高一下代码的档次。于是找了一堆效率相关的文章,做了些实验,总结一下。
    2014-07-07
  • python GUI实现小球满屏乱跑效果

    python GUI实现小球满屏乱跑效果

    这篇文章主要为大家详细介绍了python GUI实现小球满屏乱跑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论