我有一個 64 個數字的陣列,排列在 8x8 中x = np.arange(64).reshape(8, 8),我想使用它來重塑為具有 2x2 子陣列的 4x4 陣列。即這個原始陣列應該變成this。
使用此結果x = x.reshape(4,4,2,2)中的結果簡單地重塑陣列
我該如何克服這個?
謝謝
uj5u.com熱心網友回復:
您需要對軸進行一些重新排列以匹配您的預期結果。在這種情況下,您已將每個 8 長邊分成 4 個 2 塊,但隨后需要 2 個塊在最終尺寸中。所以:
np.arange(64).reshape(4,2,4,2).transpose(0,2,1,3)
Out[]:
array([[[[ 0, 1],
[ 8, 9]],
[[ 2, 3],
[10, 11]],
[[ 4, 5],
[12, 13]],
[[ 6, 7],
[14, 15]]],
[[[16, 17],
[24, 25]],
[[18, 19],
[26, 27]],
[[20, 21],
[28, 29]],
[[22, 23],
[30, 31]]],
[[[32, 33],
[40, 41]],
[[34, 35],
[42, 43]],
[[36, 37],
[44, 45]],
[[38, 39],
[46, 47]]],
[[[48, 49],
[56, 57]],
[[50, 51],
[58, 59]],
[[52, 53],
[60, 61]],
[[54, 55],
[62, 63]]]])
uj5u.com熱心網友回復:
另一種方法可能是使用sliding_window:
y = np.lib.stride_tricks.sliding_window_view(x, (2,2))[::2, ::2]
y
array([[[[ 0, 1],
[ 8, 9]],
[[ 2, 3],
[10, 11]],
[[ 4, 5],
[12, 13]],
[[ 6, 7],
[14, 15]]],
[[[16, 17],
[24, 25]],
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464598.html
