[英]How to reshape numpy array with reorder?
我有一個1 x 2 x 3陣列:
>>> a = np.array([[[1,2,3],[4,5,6]]])
>>> a
array([[[1, 2, 3],
[4, 5, 6]]])
>>> a.shape
(1, 2, 3)
我想將它重塑為(3,1,2),但是沿着原始昏暗3的元素現在沿着昏暗的1.我希望結果看起來像這樣:
>>> new_a
array([[[1, 4]],
[[2, 5]],
[[3, 6]]])
當我只使用重塑時,我會得到正確的形狀,但元素的順序是相同的,而不是我想要的:
>>> a.reshape((3,1,2))
array([[[1, 2]],
[[3, 4]],
[[5, 6]]])
我怎樣才能做到這一點?
只需使用np.transpose
-
a.transpose(2,0,1)
樣品運行 -
In [347]: a
Out[347]:
array([[[1, 2, 3],
[4, 5, 6]]])
In [348]: a.transpose(2,0,1)
Out[348]:
array([[[1, 4]],
[[2, 5]],
[[3, 6]]])
另外:
隨着np.moveaxis
-
np.moveaxis(a,2,0)
使用np.rollaxis
-
np.rollaxis(a,2,0)
有幾種方法,但transpose()
可能是最簡單的方法:
array.transpose(2,0,1)
import einops
einops.rearrange(x, 'x y z -> z x y')
最好使用一些有意義的軸名稱而不是x
, y
, z
(如寬度,高度等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.