NumPy 數組拆分

拆分 NumPy 數組

拆分是連接的反向操作。

連接(Joining)是將多個數組合并為一個,拆分(Spliting)將一個數組拆分為多個。

我們使用 array_split() 分割數組,將要分割的數組和分割數傳遞給它。

實例

將數組分為 3 部分:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)

運行實例

注釋:返回值是一個包含三個數組的數組。

如果數組中的元素少于要求的數量,它將從末尾進行相應調整。

實例

將數組分為 4 部分:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)

運行實例

提示:我們也有 split() 方法可用,但是當源數組中的元素較少用于拆分時,它將不會調整元素,如上例那樣,array_split() 正常工作,但 split() 會失敗。

拆分為數組

array_split() 方法的返回值是一個包含每個分割的數組。

如果將一個數組拆分為 3 個數組,則可以像使用任何數組元素一樣從結果中訪問它們:

實例

訪問拆分的數組:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr[0])
print(newarr[1])
print(newarr[2])

運行實例

分割二維數組

拆分二維數組時,請使用相同的語法。

使用 array_split() 方法,傳入要分割的數組和想要分割的數目。

實例

把這個 2-D 拆分為三個 2-D 數組。

import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
newarr = np.array_split(arr, 3)
print(newarr)

運行實例

上例返回三個 2-D 數組。

讓我們看另一個例子,這次 2-D 數組中的每個元素包含 3 個元素。

實例

把這個 2-D 拆分為三個 2-D 數組。

import numpy as np
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)
print(newarr)

運行實例

上例返回三個 2-D 數組。

此外,您可以指定要進行拆分的軸。

下面的例子還返回三個 2-D 數組,但它們沿行 (axis=1) 分割。

實例

沿行把這個 2-D 拆分為三個 2-D 數組。

import numpy as np
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)
print(newarr)

運行實例

另一種解決方案是使用與 hstack() 相反的 hsplit()

實例

使用 hsplit() 方法將 2-D 數組沿著行分成三個 2-D 數組。

import numpy as np
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)
print(newarr)

運行實例

提示:vsplit()dsplit() 可以使用與 vstack()dstack() 類似的替代方法。