- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 迭代数组
- NumPy - 数组重塑
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 数组分割
- NumPy - 展平数组
- NumPy - 数组转置
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组的轴
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 元素级数组比较
- NumPy - 数组过滤
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 将值追加到数组
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 填充缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 平均值
- NumPy - 中位数
- NumPy - 最小值
- NumPy - 最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 数组分割
分割 NumPy 数组
在 NumPy 中分割数组是将单个数组分成多个子数组的一种方法。这可以沿任何轴进行,具体取决于您希望如何划分数据。NumPy 提供了多种函数以不同的方式分割数组。如下所示 -
- 使用 numpy.split() 函数
- 使用 numpy.array_split() 函数
- 使用 numpy.hsplit() 函数
- 使用 numpy.vsplit() 函数
- 使用 numpy.dsplit() 函数
使用 split() 函数分割数组
我们可以在 NumPy 中使用 split() 函数将数组沿指定轴分割成多个子数组。数组根据提供的索引进行划分。以下是语法 -
numpy.split(array, indices_or_sections, axis=0)
其中,
array − 要分割的输入数组。
indices_or_sections − 这可以是整数或排序整数的一维数组。
如果为整数,则指定要创建的等大小子数组的数量。数组必须能被此数量的段均匀地整除。
如果为排序整数的一维数组,则指定分割数组的点。
axis − 要沿其分割数组的轴。默认为 0(对于二维数组,沿行分割)。
示例:分割成等大小的子数组
在下面的示例中,我们使用 numpy.split() 函数沿列(axis=1)将数组“arr”分割成 3 个相等的子数组 -
import numpy as np # array arr = np.arange(9).reshape(3, 3) # Split into 3 equal sub-arrays split_arr = np.split(arr, 3, axis=1) print("Original Array:") print(arr) print("\nSplit into 3 equal sub-arrays along axis 1:") for sub_arr in split_arr: print(sub_arr)
获得的输出如下 -
Original Array: [[0 1 2] [3 4 5] [6 7 8]] Split into 3 equal sub-arrays along axis 1: [[0] [3] [6]] [[1] [4] [7]] [[2] [5] [8]]
示例:在特定索引处分割
在这里,我们使用 NumPy 中的 split() 函数沿行(axis=0)在索引 [1, 2] 处分割数组 -
import numpy as np # array arr = np.arange(9).reshape(3, 3) # Split array at specified indices split_arr = np.split(arr, [1, 2], axis=0) print("\nSplit at indices [1, 2] along axis 0:") for sub_arr in split_arr: print(sub_arr)
这将产生以下结果 -
Split at indices [1, 2] along axis 0: [[0 1 2]] [[3 4 5]] [[6 7 8]]
使用 array_split() 函数分割数组
我们也可以使用 NumPy 中的 array_split() 函数将数组沿指定轴分割成多个子数组。与 numpy.split() 函数不同,array_split() 函数允许不等分割,如果数组不能被均匀地分割。
当数组不能被指定数量的段均匀地整除时,numpy.array_split() 函数确保生成的子数组的大小尽可能相等,并将任何额外的元素分配到前面的子数组。以下是语法 -
numpy.array_split(array, indices_or_sections, axis=0)
其中,
array − 要分割的输入数组。
indices_or_sections − 这可以是整数或排序整数的一维数组。
如果为整数,则指定要创建的等大小子数组的数量。数组必须尽可能地被均匀地分割。
如果为排序整数的一维数组,则指定分割数组的点。
axis − 要沿其分割数组的轴。默认为 0(对于二维数组,沿行分割)。
示例
在下面的示例中,我们使用 numpy.array_split() 函数将具有“10”个元素的一维数组分割成 3 个不相等的子数组 -
import numpy as np # array arr = np.arange(10) # Split into 3 sub-arrays along axis 0 split_arr = np.array_split(arr, 3) print("Original Array:") print(arr) print("\nSplit into 3 unequal sub-arrays:") for sub_arr in split_arr: print(sub_arr)
以上代码的输出如下 -
Original Array: [0 1 2 3 4 5 6 7 8 9] Split into 3 unequal sub-arrays: [0 1 2 3] [4 5 6] [7 8 9]
水平分割
我们可以使用 NumPy 中的 hsplit() 函数沿水平轴(即对于二维数组,axis = 1)分割数组。此函数沿水平方向将数组分成子数组,有效地分离数据列。以下是语法 -
numpy.hsplit(array, indices_or_sections)
其中,
array − 要分割的输入数组。
indices_or_sections − 指示如何分割数组的整数或一维索引数组。
示例
在此示例中,我们使用 numpy.hsplit() 函数沿其列将二维数组“arr”分割成 2 个相等的部分 -
import numpy as np # 2D array arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) # Split into 2 equal parts along axis 1 split_arr = np.hsplit(arr, 2) print("Original Array:") print(arr) print("\nSplit into 2 equal parts along axis 1:") for sub_arr in split_arr: print(sub_arr)
执行以上代码后,我们得到以下输出 -
Original Array:[[1 2 3 4] [5 6 7 8]] Split into 2 equal parts along axis 1: [[1 2] [5 6]] [[3 4] [7 8]]
垂直分割
我们也可以使用 NumPy 中的 vsplit() 函数沿垂直轴(即对于二维数组,axis = 0)分割数组。此函数沿垂直方向将数组分成子数组,有效地分离数据行。以下是语法 -
numpy.vsplit(array, indices_or_sections)
其中,
array − 要分割的输入数组。
indices_or_sections − 指示如何分割数组的整数或一维索引数组。
示例
在下面的示例中,我们使用 numpy.vsplit() 函数沿其行将二维数组“arr”分割成 3 个相等的部分 -
import numpy as np # 2D array arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Split into 3 equal parts along axis 0 split_arr = np.vsplit(arr, 3) print("Original Array:") print(arr) print("\nSplit into 3 equal parts along axis 0:") for sub_arr in split_arr: print(sub_arr)
获得的输出如下所示 -
Original Array: [[1 2 3] [4 5 6] [7 8 9]] Split into 3 equal parts along axis 0: [[1 2 3]] [[4 5 6]] [[7 8 9]]
深度分割
numpy.dsplit() 函数用于沿其第三维分割三维数组。此维度通常称为深度维度,对应于 axis=2。以下是语法 -
numpy.dsplit(array, indices_or_sections)
示例
在此示例中,使用 numpy.dsplit() 函数沿其第三维将三维数组“arr”分割成四个相等的部分 -
import numpy as np # Example 3D array arr = np.arange(24).reshape((2, 3, 4)) # Split into 4 equal parts along axis 2 (depth) split_arr = np.dsplit(arr, 4) print("Original Array:") print(arr) print("\nSplit into 4 equal parts along axis 2 (depth):") for sub_arr in split_arr: print(sub_arr) print()
产生的结果如下 -
Original Array: [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] Split into 4 equal parts along axis 2 (depth): [[[ 0] [ 4] [ 8]] [[12] [16] [20]]] [[[ 1] [ 5] [ 9]] [[13] [17] [21]]] [[[ 2] [ 6] [10]] [[14] [18] [22]]] [[[ 3] [ 7] [11]] [[15] [19] [23]]]