Lon*_*guy 8 python transpose numpy
我很难理解numpy.transpose实际上是如何工作的.例如
a_value = array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
Run Code Online (Sandbox Code Playgroud)
当我这样做的时候
np.transpose(a_value, (2, 1, 0))
Run Code Online (Sandbox Code Playgroud)
我明白了
array([[[0, 4],
[2, 6]],
[[1, 5],
[3, 7]]])
Run Code Online (Sandbox Code Playgroud)
如何手动导出此转置?我需要在上述情况下直观地理解公式或步骤,以便我可以将其推广到更高的维度.
Ana*_*mar 16
numpy.transpose(a, axes=None)轴:整数列表,可选默认情况下,反转尺寸,否则根据给定的值置换轴.
第二个参数是用于置换值的轴.也就是说,例如,如果初始元素的索引为(x,y,z)(其中,x是第0轴y是第一轴线,并且z是第二轴),将得到的阵列中的该元素的位置变成(Z,Y,X)(即第二轴的第一,然后是第1轴,最后是第0轴),基于您提供的参数axes.
由于您正在转置一个形状的数组(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)
...
Run Code Online (Sandbox Code Playgroud)
由于您选择的轴是微不足道的,让我们为另一个轴解释.示例 -
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]]])
Run Code Online (Sandbox Code Playgroud)
这里,第一个元素(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)
...
Run Code Online (Sandbox Code Playgroud)