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]]]