2015-10-13 58 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

感谢您的简单解释。 –

相关问题