二维数组的transpose就是矩阵的转置,这里直接略过。直接讨论三维情况。
0是代表了第一个轴,1是代表了第二个轴,2是代表了第三个轴,这里我们用x,y,z来分别代表轴,也就是说对于一个三维数组的坐标(0,1,2)是默认的(x,y,z).
(x,y,z)的物理含义
:在一个三维数组里面,x是表示这个三维数组有多少个二维数组,y是代表这个二维数组有几行,z是代表这个二维数组有几列。
假设三维数组里面有一个数比如是888
,他的坐标是(x1,y1,z1)
,经过transpose((2,1,0))
变换,那么直接替换2,1,0对应的英文字母也就是z,y,x,也就是说经过transpose变换后,888这个数的坐标为(z1,y1,x1)
。
再举一个栗子,如果是transpose((1,2,0))
,按照前面的英文字母的原则,也就是(x,y,z)->(y,z,x)
,那么888的坐标应该是在(y1,z1,x1)
用代码举例子,以7为例子,也是照着上面的transpose((2,1,0))
和transpose((1,2,0))
两个例子,7的坐标是(0,1,3),经过transpose((2,1,0))
之后,也就是(x,y,z)->(z,y,x),也就是应该是(3,1,0),查看结果发现完全正确。
import numpy as np
a=np.arange(16).reshape(2,2,4)
print(a)
b=a.transpose(2,1,0)
print('b = ',b)
第二个transpose((1,2,0)),(x,y,z)->(y,z,x),以7为例子,(0,1,3)->(1,3,0),预计坐标在(1,3,0),验证后发现完全正确!至此,这个问题算是哦了!over!
以代码的例二为例子,三维数组形状是(x=2,y=2,z=4)
,然后经过了transpose(1,2,0)
变换后,(x,y,z)->(y,z,x),所以形状变成了(2,4,2)