numpy的transponse和swapaxes方法
最近正在着手学习《利用Python进行数据分析·第2版》中文版开源书籍对其中第四章4.1数组转置和轴变换中所提及的transponse方法和swapaxes方法感到疑惑,查阅了一些网络上的解释之后,作此笔记以作理解。
Transponse方法
Transponse直译就是转置阵,以下面的矩阵作为例子解释该方法的用法
array=np. arange(8). reshape((2, 2, 2))
print(array)
这条语句的输出为:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
reshape方法按照传入的元组(2,2,2)把新建的一维数组重塑成为一个新的数组
在这个新的数组中,
0 1 2
array[0][0][0]=0
array[0][0][1]=1
array[0][1][0]=2
array[0][1][1]=3
array[1][0][0]=4
array[1][0][1]=5
array[1][1][0]=6
array[1][1][1]=7
array1=array.transponse((2,0,1))
print(array1)
输出为:
[[[0 2]
[4 6]]
[[1 3]
[5 7]]]
经过transponse方法处理的数组中,
2 0 1
array[0][0][0]=0
array[1][0][0]=1
array[0][0][1]=2
array[1][0][1]=3
array[0][1][0]=4
array[1][1][0]=5
array[0][1][1]=6
array[1][1][1]=7
即传入transponse的元组中(0,1,2)分别代表数组的索引值,这个方法把数组中某一元素的位置按索引值的顺序改变,形成新的数组。
参考文章:Numpy的transponse()函数
swapaxes方法
swapaxes方法在用法上与transponse有些许不同,传入到swapaxes方法中的不再是元组。
array2=array.swapaxes(1,2)
print(array2)
其输出为
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]
在array2中
0 2 1
array2[0][0][0]=0
array2[0][1][0]=1
array2[0][0][1]=2
array2[0][1][1]=3
array2[1][0][0]=4
array2[1][1][0]=5
array2[1][0][1]=6
array2[1][1][1]=7
简单地说swapaxes(1,2)方法,是把原来数组array中所有元素的1,2的索引值交换,从而组成新的数组array2
值得注意的是swapaxes(1,2)和swapaxes(2,1)所得到的结果是一样的
arr3 = arr.swapaxes(2,1)
print(arr3)
输出是:
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]