使用Numpy 將2D 陣列分割為更小的2D 陣列
通常,有必要將2D 陣列分割為更小的2D 陣列數。例如,考慮將 2x4 陣列分成兩個 2x2 陣列的任務。
解:
reshape 和swapaxes 函數的組合在這種情況下被證明是有效的:
import numpy as np def blockshaped(arr, nrows, ncols): """ Converts a 2D array into a 3D array with smaller subblocks. """ h, w = arr.shape assert h % nrows == 0, f"{h} rows is not divisible by {nrows}" assert w % ncols == 0, f"{w} columns is not divisible by {ncols}" return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols))
用法範例:
考慮以下陣列:
c = np.arange(24).reshape((4, 6)) print(c)
輸出:
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
切片將陣列分成更小的區塊:
print(blockshaped(c, 2, 3))
切片將陣列分成更小的區塊:
[[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
切片將陣列分成更小的區塊:
輸出:以上是如何使用 NumPy 將 2D 陣列分割成更小的 2D 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!