NumPy 陣列拆分
拆分 NumPy 陣列
拆分是連線的逆操作。
連線是將多個數組合併為一個,而拆分是將一個數組分解為多個。
我們使用 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()
方法,傳入要拆分的陣列以及要進行的拆分數量。
示例
將二維陣列拆分成三個二維陣列。
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)
自己動手試一試 »
上面的示例返回三個二維陣列。
讓我們看另一個例子,這次二維陣列中的每個元素包含 3 個元素。
示例
將二維陣列拆分成三個二維陣列。
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)
自己動手試一試 »
上面的示例返回三個二維陣列。
此外,您可以指定要圍繞哪個軸進行拆分。
下面的示例也返回三個二維陣列,但它們是沿著行(axis=1)拆分的。
示例
將二維陣列沿著行拆分成三個二維陣列。
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)
自己動手試一試 »
另一種解決方案是使用 hsplit()
,它是 hstack()
的反向操作。
示例
使用 hsplit()
方法將二維陣列沿著行拆分成三個二維陣列。
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)
自己動手試一試 »
注意:與 vstack()
和 dstack()
類似的替代方案有 vsplit()
和 dsplit()
。