详解Numpy中的transpose方法

最近在学Numpy碰到了关于数组转置和换轴的概念,对tanspose方法有些疑惑,尤其是多维,查了不少资料,终于搞懂了。

Numpy数组的轴(axis)

所谓的**轴(axis)**可以理解为数组的维度。

具体而言,二维数组就是有两个维度,如果从空间上看,它就是一个平面,由x轴和y轴构成,而与此相对应的,该二维数组就有两个轴,x轴对应0轴,y轴对应1轴。

同理,三维数组有三个维度,空间上有x轴、y轴和z轴构成,与此对应,该三维数组有三个轴,x轴对应0轴,y轴对应1轴,z轴对应2轴。更高维度的数组以此类推。

transpose函数的作用

transpose函数实际上就是通过改变的相对位置来调整数组的结构。

例如:

二维数组中,transpose函数的作用相当于转置

x = np.arange(4).reshape((2,2)) #默认轴的相对位置为0,1
print(x)
#输出结果
[[0 1]   
 [2 3]]

利用transpose函数

x = np.arange(4).reshape((2,2))
x = np.transpose((1,0)) #现在轴的相对位置为1,0
print(x)
#输出结果
[[0 2] 
 [1 3]]

原来的二维数组有两个轴:x和y轴,分别对应0轴和1轴,现在将0轴和1轴位置交换,实际上就是将x轴和y轴交换,对于二维数组来说,就是转置操作。

二维很好理解,下面我们来看三维。

arr = np.arange(16).reshape((2,2,4)) #默认轴相对位置为0,1,2
print(arr)
#输出结果
[[[ 0,  1,  2,  3],
  [ 4,  5,  6,  7]],
 [[ 8,  9, 10, 11],
  [12, 13, 14, 15]]])

利用transpose函数:

arr.transpose((1,0,2)) #现在轴的相对位置为1,0,2
#结果
[[[ 0,  1,  2,  3],
  [ 8,  9, 10, 11]],
 [[ 4,  5,  6,  7],
  [12, 13, 14, 15]]])

上面的操作实际是将x轴(0轴)与y轴(1轴)互换。
具体拿数字举例,原数组中的5的索引为(0,1,1),transpose操作后将x轴(0轴)与y轴(1轴)互换,5的索引变为(1,0,1),其他数字同理。

四维、五维等更高维度的也是如此。


版权声明:本文为BlankGrid原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。