拆分 NumPy 数组
Splitting 是 Joining 的逆操作。
Join 将多个数组合并为一个,Splitting 将一个数组分成多个。
我们array_split()
用于拆分数组,我们将要拆分的数组和拆分的数量传递给它。
例子
将数组拆分为 3 部分:
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
[array([1, 2]), array([3, 4]), array([5, 6])]
注意:返回值是一个包含三个数组的数组。
如果数组的元素少于所需的元素,它将相应地从末尾进行调整。
例子
将数组拆分为 4 部分:
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
[array([1, 2]), array([3, 4]), array([5]), array([6])]
拆分二维数组
拆分二维数组时使用相同的语法。
使用array_split()
方法,传入要拆分的数组和要拆分的数量。
例子
将二维数组拆分为三个二维数组。
arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
newarr = np.array_split(arr, 3)
[array([[1, 2],
[3, 4]]), array([[5, 6],
[7, 8]]), array([[ 9, 10],
[11, 12]])]
上面的示例返回三个二维数组。
让我们看另一个例子,这次二维数组中的每个元素都包含 3 个元素。
例子
将二维数组拆分为三个二维数组。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.array_split(arr, 3)
上面的示例返回三个二维数组。
此外,您可以指定要围绕哪个轴进行拆分。
下面的示例还返回三个二维数组,但它们沿行 (axis=1) 拆分。
将二维数组沿行拆分为三个二维数组。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
[array([[ 1],
[ 4],
[ 7],
[10],
[13],
[16]]), array([[ 2],
[ 5],
[ 8],
[11],
[14],
[17]]), array([[ 3],
[ 6],
[ 9],
[12],
[15],
[18]])]
另一种解决方案是使用hsplit()
相反的 hstack()
例子
使用该hsplit()
方法将二维数组沿行拆分为三个二维数组.
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.hsplit(arr, 3)
[array([[ 1],
[ 4],
[ 7],
[10],
[13],
[16]]), array([[ 2],
[ 5],
[ 8],
[11],
[14],
[17]]), array([[ 3],
[ 6],
[ 9],
[12],
[15],
[18]])]
注意:vstack()
和 的类似替代dstack()
项可用作 vsplit()
和 dsplit()
。
转载于:
https://www.w3schools.com/python/numpy/numpy_array_split.asp