[英]Swapping the columns and rows of a 3D numpy array by numpy.reshape()
現在我有一個形狀為 (2,3,4) 的 3D numpy 數組,如下所示:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
現在,我想通過交換數組的最后 2 個維度來將數組重塑為 (2,4,3),如下所示:
[[[ 0 4 8]
[ 1 5 9]
[ 2 6 10]
[ 3 7 11]]
[[12 16 20]
[13 17 21]
[14 18 22]
[15 19 23]]]
在 numpy.reshape 的文檔中,reshape numpy arrays 有兩種類型的命令,包括'C'和'F'。 我嘗試使用它們,結果如下:
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]]]
[[[ 0 5 10]
[ 4 9 3]
[ 8 2 7]
[ 1 6 11]]
[[12 17 22]
[16 21 15]
[20 14 19]
[13 18 23]]]
我也嘗試過連續進行整形,但仍然無法達到我想要的形狀。 有誰知道如何按所需順序重塑數組?
它可以通過最后兩個軸上的轉置來完成:
arr = np.array([[[ 0 , 1, 2, 3],
[ 4 , 5, 6, 7],
[ 8 , 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
np.transpose(arr, axes = (0,2,1))
array([[[ 0, 4, 8],
[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]],
[[12, 16, 20],
[13, 17, 21],
[14, 18, 22],
[15, 19, 23]]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.