簡體   English   中英

如何通過重新排序重塑numpy數組?

[英]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')

最好使用一些有意義的軸名稱而不是xyz (如寬度,高度等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM