Python NumPy(九)拆分數組


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM