Python 对于这个例子,numpy.transpose是如何工作的?
我很难理解numpy.transpose实际上是如何工作的。 比如说Python 对于这个例子,numpy.transpose是如何工作的?,python,numpy,transpose,Python,Numpy,Transpose,我很难理解numpy.transpose实际上是如何工作的。 比如说 a_value = array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) 当我这么做的时候 np.transpose(a_value, (2, 1, 0)) 我明白了 如何手动导出此转置?在上面的例子中,我需要直观地理解公式或步骤,这样我就可以把它推广到更高的维度 如 numpy.转
a_value = array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
当我这么做的时候
np.transpose(a_value, (2, 1, 0))
我明白了
如何手动导出此转置?在上面的例子中,我需要直观地理解公式或步骤,这样我就可以把它推广到更高的维度 如
numpy.转置(a,轴=无)
轴:整数列表,可选
默认情况下,反转尺寸标注,否则根据给定的值排列轴
第二个参数是用来排列值的轴。也就是说,例如,如果初始元素的索引是(x,y,z)
(其中x
是第0轴,y
是第1轴,z
是第2轴),则该元素在结果数组中的位置变为(z,y,x)(即第2轴先,然后是第1轴,最后是第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)
...
这里有更多的澄清: 不要混淆
np.重塑(z,y,x)
和np.转置(0,1,2)
的参数
np.reformate()
使用我们矩阵的维度,想想(表、行、列)
,来指定它的布局
np.transpose()
使用整数0、1和2表示要交换的轴,并分别对应于z、y和x
例如,如果我们在一个由2张表、3行和5列组成的矩阵中有数据
我们可以采取下一步,从列表的角度来思考。因此,2x3x5矩阵的z,y,x
或表、行、列
表示是
[[[ 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]]]
…但是我们将这些数据输入到的模块需要这样的布局:工作表1包含每个工作表的第一行,工作表2包含第二行,依此类推。然后,我们需要使用np.transpose(1,0,2)来转置数据。这将交换z轴和y轴,并转置数据
[[[ 0, 1, 2, 3, 4],
[15, 16, 17, 18, 19]],
[[ 5, 6, 7, 8, 9],
[20, 21, 22, 23, 24]],
[[10, 11, 12, 13, 14],
[25, 26, 27, 28, 29]]]
请注意与使用np.reforme(3,2,5)的区别,因为这不会转置数据——只会重新排列数据
[[[ 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]]]
axes=参数是希望在结果中排列起始轴的方式 在我的例子中,我有一个形状数组(2,1997,4,4),我只想转置(4,4)子数组 axes=()在这里需要4个参数,每个轴一个。轴=(0,1,2,3)不会产生任何更改,因为请求的结果排序与开始排序相同
若要按我的需要仅转置(4,4)数组,我使用axes=(0,1,3,2)--请只交换最后两个轴。您是否阅读了文档,即
帮助(numpy.transpose)
?您只需“排列”维度。如果您传递置换(2,1,0)
,那么位于位置[x,y,z]
的元素现在将位于位置[z,y,x]
,或者位于位置[z,x,y]
进行置换(3,0,1)
,感谢您的简单解释。
[[[ 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]]]