首頁  >  文章  >  後端開發  >  如何將 NumPy 2D 陣列分成更小的 2D 陣列?

如何將 NumPy 2D 陣列分成更小的 2D 陣列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-09 07:44:02287瀏覽

How can I divide a NumPy 2D array into smaller 2D arrays?

將二維陣列分割成更小的陣列

問題:
您希望將二維( 2D) NumPy 陣列轉換為較小的2D 陣列。例如,您可能想要將一個 2x4 陣列轉換為兩個 2x2 陣列。

解決方案:
reshape 和 swapaxes 函數的組合可讓您將陣列分割為「區塊」。 」這是實現此目的的Python 實現:

def blockshaped(arr, nrows, ncols):
    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))

在此解決方案中:

  • nrows 和ncols 定義每個較小數組的維度。
  • nrows 和ncols 定義每個較小數組的維度。
  • 您必須確保輸入陣列可以被這些值整除。函數將陣列重新排列成區塊。函數交換軸以獲得所需的形狀。 🎜>
  • 考慮以下輸入陣列:
  • 使用nrows=2 和ncols=3 的blockshape,您可以將此陣列分割成下列區塊:

此示範說明如何將 2D 陣列分割為指定尺寸的較小矩形陣列。

以上是如何將 NumPy 2D 陣列分成更小的 2D 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn