在numpy的使用过程中,常常会用到数组的转置,从二维数组角度来讲,是将以对角线的数据进行中心对称的转换,但是在维数组中,并不是简单的这种方式。
下面来介绍一下数组的转置应该是如何理解的:
在众多教程和视频当中,绝大部分都是以二维数组作为例子,通过讲0轴1轴,中心对称的概念来解释。
但是在个人理解中,这样反而会加大了初学者的理解难度,因此在以后可能要面对的是多维数组,不仅仅是二维数组,而且容易将思维固化。那么,从本质上讲一下转置到底是什么。
首先用几行代码和结果展示一下转置:
a = np.arange(120).reshape(2,3,4,5)
print('a的shape:',a.shape)
print('a转置后的shape:',a.T.shape)
>>>a的shape: (2, 3, 4, 5)
>>>a转置后的shape: (5, 4, 3, 2)
由此可以看出,转置实质上就是将shape顺序改变,变为相反的顺序,即维度数据的转换。
在数据方面,也会跟着格式相应的转换,从最小的数据块开始,依次按照新shape取转换。
举例:
a = np.arange(24).reshape(3,2,4,)
print(a)
print(a.T)
>>>
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]
[[16 17 18 19]
[20 21 22 23]]]
****************************************************************************************************
[[[ 0 8 16]
[ 4 12 20]]
[[ 1 9 17]
[ 5 13 21]]
[[ 2 10 18]
[ 6 14 22]]
[[ 3 11 19]
[ 7 15 23]]]
转置有三种方法:
1.使用"T"方法
2.使用"transpose"方法
3.使用"swapaxes"方法