Numpy array_split() 函数
Numpy array_split() 函数用于将数组沿指定轴拆分为多个大小大致相等的子数组。此函数是 numpy 模块的一部分,即使数组长度不能被整除,它也能灵活地将数组拆分成多个部分。
numpy.array_split() 和 numpy.split() 这两个函数用于拆分给定的数组。这些函数之间的区别在于,numpy.array_split() 可以处理无法均匀划分的数组,并且在这种情况下不会引发错误,而 numpy.split() 则要求划分的数组必须是均匀的,如果数组无法分成均匀的部分,则会引发 ValueError。
语法
以下是 Numpy array_split() 函数的语法 -
numpy.array_split(array, indices_or_sections, axis=0)
参数
以下是 Numpy array_split() 函数的参数 -
- array - 要划分的数组拆分。
- indices_or_sections - 如果为整数,则指定要创建的等大小子数组的数量。如果为列表,则指定拆分数组的索引。
- axis(可选) - 拆分数组所沿的轴。默认值为 0(二维数组沿行拆分)。
返回值
此函数返回沿指定轴拆分原始数组创建的子数组列表。
示例
以下是一个基本示例,演示如何使用 Numpy array_split() 函数将一维数组拆分为三个子数组 -
import numpy as np my_Array = np.array([1, 2, 3, 4, 5, 6, 7, 8]) split_Array = np.array_split(my_Array, 3) print("数组 -", my_Array) print("拆分数组 -", split_Array)
输出
以下是上述代码的输出 -
数组 - [1 2 3 4 5 6 7 8] 拆分数组 - [array([1, 2, 3]), array([4, 5, 6]), array([7, 8])]
示例 - 沿列拆分二维数组
在下面的示例中,我们通过在 numpy.array_split() 中将 axis 参数指定为 1,将二维数组沿列拆分为三个子数组 -
import numpy as np my_array = np.array([[10, 20, 30, 40], [50, 60, 70, 80]]) split_array = np.array_split(my_array, 3, axis=1) print("数组 - ", my_array) print("拆分数组 -", split_array)
输出
以下是上述代码的输出 -
数组 - [[10 20 30 40] [50 60 70 80]] 拆分数组 - [array([[10, 20], [50, 60]]), array([[30], [70]]), array([[40], [80]])]
示例 - 沿行拆分二维数组
这里,我们使用 numpy.array_split() 沿行(axis=0)拆分二维数组,以创建不均匀的子数组−
import numpy as np my_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) split_array = np.array_split(my_array, 3, axis=0) print("数组 - ", my_array) print("拆分数组 -", split_array)
输出
上述代码的输出如下:
数组 - [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] 拆分数组 - [array([[1, 2, 3], [4, 5, 6]]), array([[7, 8, 9]]), array([[10, 11, 12]])]
示例 - 按指定索引拆分
我们还可以以列表的形式指定拆分数组的精确索引。这里,我们使用 numpy.array_split() 将数组沿一维数组在索引 2 和 5 处拆分 - ... [array([1, 2]), array([3, 4, 5]), array([6, 7, 8, 9])]
示例 - 处理不均匀分割
当数组大小不能被指定的部分数整除时,numpy.array_split() 可确保最后几个子数组可能小于其他子数组,而不会引发错误 -
import numpy as np my_array = np.array([10, 20, 30, 40, 50]) split_array = np.array_split(my_array, 4) print("数组 -", my_array) print("拆分数组 -", split_array)
输出
以下是上述代码的输出 -
数组 - [10 20 30 40 50] 拆分数组 - [array([10, 20]), array([30]), array([40]), array([50])]