拆分 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