2017-05-17 61 views
0

我有一個表示矩陣的陣列數組,我需要轉置每個矩陣,理想情況下不需要轉置循環。當我使用array.T時,它會轉換所有內容,而不是每個數組中的軸。是否有可能只是轉置每個矩陣?如何在陣列內轉置陣列

INPUT: np.arange(27).reshape(3, 3, 3).T 
OUTPUT: 
[[[ 0 9 18] 
    [ 3 12 21] 
    [ 6 15 24]] 

[[ 1 10 19] 
    [ 4 13 22] 
    [ 7 16 25]] 

[[ 2 11 20] 
    [ 5 14 23] 
    [ 8 17 26]]] 

我想是的陣列看起來像這樣:

[[[ 0 3 6] 
    [ 1 4 7] 
    [ 2 5 8]] 

[[ 9 12 15] 
    [ 10 13 16] 
    [ 11 14 17]] 

[[ 18 21 24] 
    [ 19 22 25] 
    [ 20 23 26]]] 
+0

使用'a.transpose(2,0,1)'。另外,最後一塊看起來不對。 – Divakar

+0

我剛修好了。這產生了[[0,3,6],[9,12,15],[18,21,26]]的第一個矩陣,它不是我想要的每個陣列轉置。 – yakkery

回答

0
In [11]: A = np.arange(27).reshape(3, 3, 3) 
In [12]: A 
Out[12]: 
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], 
     [24, 25, 26]]]) 

轉過去的2個維度:

In [13]: A.transpose(0,2,1) 
Out[13]: 
array([[[ 0, 3, 6], 
     [ 1, 4, 7], 
     [ 2, 5, 8]], 

     [[ 9, 12, 15], 
     [10, 13, 16], 
     [11, 14, 17]], 

     [[18, 21, 24], 
     [19, 22, 25], 
     [20, 23, 26]]]) 

A.swapaxes(1,2)也做它。

+0

哇,我已經玩過轉軸的軸,不知怎麼沒有遇到那個組合,也沒有想過嘗試它......謝謝你的回答!轉置如何描述三維陣列也可能剛剛爲我點擊。 – yakkery