numpy的transponse和swapaxes方法

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]]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章