理解python中numpy.transpose的用法(座標系圖解)

在看一些文獻的源碼時,經常能看到numpy.transpose的應用,主要就是實現轉置。對於高維數組有時就會繞進去,查閱資料時看到一篇博客通過座標系分析和代碼驗證,讓我對transpose的用法原理恍然大悟的感覺,個人感覺十分便於理解,但是我發現原作者文章中的座標有一點點問題(個人理解,若理解有誤,歡迎指正),爲了加深自己的印象,特地整理一下便於以後的學習。
參考博客:https://www.cnblogs.com/xiaoboge/p/9682364.html
首先我們先看一個代碼:

>>> import numpy as np
>>> x=np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
       [2, 3]])

對於二維的數字,transpose在不指定參數的情況下是默認矩陣的轉置。

>>> x.transpose()
array([[0, 2],
       [1, 3]])

如果指定參數(0,1),如下所示,x並沒有改變

>>> x.transpose((0,1))
array([[0, 1],
       [2, 3]])

如果指定參數(1,0),如下所示,x轉置了

>>> x.transpose((1,0))
array([[0, 2],
       [1, 3]])

這是爲什麼呢?我們通過建立座標軸很好很直觀的看出這是爲什麼。我們可以設第一個方括號“[ ]”爲0軸第二個方括號“[ ]”爲1軸,則x可在0-1座標系下表示爲:(紅色的數字即爲數組中的數據,黑色是座標系刻
在這裏插入圖片描述
因爲x.transpose((0,1))表示按照原座標軸改變序列,所以結果並不改變。而x.transpose((1,0))表示交換‘0軸’和‘1軸’。
保持清晰理解的關鍵是記住第一個方括號“[ ]”爲0軸第二個方括號“[ ]”爲1軸 這樣 transpose的關係就清晰了。
在這裏插入圖片描述下面看一個三維的,以便加深理解。

>>> A=np.arange(16)
>>> A=A.reshape(2,2,4)
>>> A
array([[[0,1,2,3],
        [4,5,6,7],
       [[8,9,10,11],
        [12,13,14,15]]])

對於上面代碼中的A表示成如下三維座標的形式:
在這裏插入圖片描述
當我們使用A.transpose((0,1,2)),則A保持不變;A.transpose((1,0,2))就是將0軸與1軸交換。關鍵是記住第一個方括號“[ ]”爲0軸第二個方括號“[ ]”爲1軸第三個方括號“[ ]”爲2軸

>>> A.transpose((1,0,2))
array([[[0,1,2,3],
        [8,9,10,11],
       [[4,5,6,7],
        [12,13,14,15]]])

將0軸與1軸交換在這裏插入圖片描述若是設置不同的參數,以此類推。若有問題或好的方法幫助理解和學習,歡迎交流。

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