2015-10-13 54 views
6

我很難理解numpy.transpose實際上是如何工作的。 例如numpy.transpose如何在這個例子中工作?

a_value = array([[[0, 1], 
        [2, 3]], 

       [[4, 5], 
        [6, 7]]]) 

當我做

np.transpose(a_value, (2, 1, 0)) 

我得到

array([[[0, 4], 
     [2, 6]], 

     [[1, 5], 
     [3, 7]]]) 

我怎樣才能獲得手動轉這個?我需要在上述情況下直觀地理解公式或步驟,以便我可以將它推廣到更高維度。

+3

您是否閱讀過文檔,例如'help(numpy.transpose)'?你只是「排列」尺寸。如果你通過置換'(2,1,0)',那麼處於'[x,y,z]'位置的元素現在將處於位置'[z,y,x]'或位置' [z,x,y]'用於置換'(3,0,1)' –

+0

謝謝@tobias_k –

回答

12

documentation -

numpy.transpose(a, axes=None)

軸給出:整數的列表中,可選 默認情況下,反向的尺寸,根據所給出的值,否則置換的軸。

第二個參數是用於置換值的軸。例如,如果初始元素的索引是(x,y,z)(其中x是第0軸,y是第1軸,並且z是第2軸),則該元素在結果數組中的位置變爲(z,y,x)(即根據您爲axes提供的參數,首先是第二軸,然後是第一根軸,最後是第0根軸)。

既然你調換形狀(2,2,2)的數組,轉置造型也(2,2,2),並且位置將作爲改變 -

(0,0,0) -> (0,0,0) 
(1,0,0) -> (0,0,1) 
(0,1,0) -> (0,1,0) 
(1,1,0) -> (0,1,1) 
... 

既然你選擇是微不足道的軸,讓解釋爲另一個軸。實施例 -

In [54]: A = np.arange(30).reshape((2, 3, 5)) 
In [55]: A 
Out[55]: 
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, 27, 28, 29]]]) 

In [56]: np.transpose(A,(1,2,0)) 
Out[56]: 
array([[[ 0, 15], 
     [ 1, 16], 
     [ 2, 17], 
     [ 3, 18], 
     [ 4, 19]], 

     [[ 5, 20], 
     [ 6, 21], 
     [ 7, 22], 
     [ 8, 23], 
     [ 9, 24]], 

     [[10, 25], 
     [11, 26], 
     [12, 27], 
     [13, 28], 
     [14, 29]]]) 

在此,第一元件(0,0,0)變成在結果中的(0,0,0)元件。

第二個元素(0,0,1)成爲結果中的(0,1,0)元素。等 -

(0,0,0) -> (0,0,0) 
(0,0,1) -> (0,1,0) 
(0,0,2) -> (0,2,0) 
... 
(2,3,4) -> (3,4,2) 
... 
+0

感謝您的簡單解釋。 –

相關問題