numpy中transpose和swapaxes个人理解

numpy中transpose和swapaxes个人理解

在numpy中transpose和swapaxes的原理很类似,但功能有所不同。需要注意transpose()是作用在数组各个元素上的,而swapaxes是作用在维度上的。

transpose()括号内如不加参数,其作用等同于.T,其括号内如果不加入参数,其含义为:将数组的各个元素,从原默认维度顺序,转换至括号内维度顺序。这里引入以下例子方便理解:

首先建立一个三维数组,如下图:
numpy中transpose和swapaxes个人理解
.
使用transpose()函数转换各个元素的维度:
numpy中transpose和swapaxes个人理解
数组维度默认(0,1,2),也就是第一个维度,第二个维度,第三个维度,上述transpose()函数,将维度改变为(1,2,0), 第一维度变为第三维度、第二维度变为第一维度、第三维度变为第二维度。用原数组的 arr(1,1,2)为例,对应元素为14,现在维度顺序变换后,为arr(1,2,1),整个数组各个元素均按照这个变化,这便是transpose()函数。

如果理解了上面的内容,那么swapaxes()就更好理解了,swapaxes和transpose最大的区别就是对象不同,swapaxes的对象是维度序号。这里再次使用例子:
numpy中transpose和swapaxes个人理解

还是先建立数组,之后调用swapaxes()函数:
numpy中transpose和swapaxes个人理解

上图操作为,转换第二和第三维度,其操作和transpose(0,2,1)所得结果相同
numpy中transpose和swapaxes个人理解
不同处在于操作对象不同。