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的位置变了

综上无论四维,五维。。。都可以以这个思路分析
是不是很简单?