transpose的原理是根据维度shape索引决定的
二维数组
生成一个2*2的数组
arr = np.arange(4).reshape((2,2))
arr
我们生成了一个维度为2的二维数组,其中有两个索引值:矩阵的行和列
transpose()函数的作用就是调换数组的行列值的索引值,类似于求矩阵的转置
arr.transpose()
我们可以直观的看到,数组的行列索引值对换,1的位置从arr(0,1)跑到了arr(1,0)
三维数组
我们继续生成一个三维数组
x = np.arange(12).reshape((2,2,3))
x
我们由高中数学知道
三维是由x,y,z轴组成的
假设三维数组中的索引值为x,y,z
transpose()函数的作用就是调换x,y,z轴的位置,也就是数组的索引值
所以我们正常的三维数组的索引值为(0,1,2)相当于(x,y,z)
刚刚的三维数组是
我们使用reanspose函数
x = np.transpose(x,(1,0,2))
x
就相当于原来x轴的值和y轴的值进行了对换
那为什么结果是这样的呢
举个例子
按原来的x
数字5 的索引是多少?
是
x[0,1,2]
接下来使用了transpose函数将三维的(0,1,2)变为(1,0,2)
因此数字5的索引也变了由x[0,1,2]变为x[1,0,2]
而x[1,0,2]是数字8
所以数字8和数字5的位置变了
综上无论四维,五维。。。都可以以这个思路分析
是不是很简单?