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