將 2D 陣列分割成更小的 2D 子數組
問題:
問題:我們可以將 2D陣列細分為較小的二維陣列在NumPy?
[[1,2,3,4] -> [[1,2] [3,4] [5,6,7,8]] [5,6] [7,8]]
將一個2x4 陣列轉換為兩個2x2 陣列:
機轉:
更好的方法是重塑數組,而不是創建新數組使用 reshape() 現有數組並使用 swapaxes() 交換軸。
區塊函數:def blockshaped(arr, nrows, ncols): """ Partitions an array into blocks. Args: arr (ndarray): The original array. nrows (int): Number of rows in each block. ncols (int): Number of columns in each block. Returns: ndarray: Partitioned array. """ h, w = arr.shape assert h % nrows == 0, f"{h} rows is not evenly divisible by {nrows}" assert w % ncols == 0, f"{w} cols is not evenly divisible by {ncols}" return (arr.reshape(h // nrows, nrows, -1, ncols) .swapaxes(1, 2) .reshape(-1, nrows, ncols))
以下是區塊函數的實作函數:
np.random.seed(365) c = np.arange(24).reshape((4, 6)) print(c) print(blockshaped(c, 2, 3))
示範:
替代解決方案:SuperBatFish的 blockwise_view 提供了另一個選項,提供不同的區塊排列和基於視圖的表示。以上是如何在 NumPy 中將 2D 陣列分割成更小的 2D 子陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!