numpy之transpose詳解

transpose用於numpy中高維度數組的軸變換,非常不好理解,我用自己的理解以三維數組來舉例:
transpose()括號中傳入的參數通常爲0,1,2,可以將0看作0軸,1看作1軸,2看作2軸;對於三維數組(a,b,c)來說,可以把它看作是a個b行c列的數組。拿

 arr = np.arange(0,16).reshape(2,2,4)

這個數組來舉例
在這裏插入圖片描述
這個數組的維度是(2,2,4),可以把它看作兩個兩行四列的矩陣,第一個是
在這裏插入圖片描述
第二個是
在這裏插入圖片描述
把這個矩陣分解寫成下邊這種格式:

豎着看
arr[0][0][0] = 0	arr[1][0][0] = 8
arr[0][0][1] = 1	arr[1][0][1] = 9 
arr[0][0][2] = 2	arr[1][0][2] = 10
arr[0][0][3] = 3	arr[1][0][3] = 11
arr[0][1][0] = 4	arr[1][1][0] = 12
arr[0][1][1] = 5	arr[1][1][1] = 13
arr[0][1][2] = 6	arr[1][1][2] = 14
arr[0][1][3] = 7	arr[1][1][3] = 15

第一個[]是數組的0維,第二個[]是數組的1維,第三個[]是數組的2維


再回到transpose上,transpose的括號中的參數代表的就是數組的維度.
transpose(0,1,2)表示三個維度不發生交換,還是原來的數組;
transpose(1,0,2)表示第0維度和第1維度發生交換,也就是將arr[][][]數組中第0個[]和第1個[]中的數字發生交換,原數組的形狀是(2,2,4),交換以後仍然是(2,2,4),形狀不變但是內容卻變了。例如將arr[0][1][0] = 4換成arr[1][0][0]=4,將arr[1][0][0]=8換成arr[0][1][0]=8,以此類推

豎着看
arr[0][0][0] = 0	arr[1][0][0] = 4
arr[0][0][1] = 1	arr[1][0][1] = 5 
arr[0][0][2] = 2	arr[1][0][2] = 6
arr[0][0][3] = 3	arr[1][0][3] = 7
arr[0][1][0] = 8	arr[1][1][0] = 12
arr[0][1][1] = 9	arr[1][1][1] = 13
arr[0][1][2] = 10	arr[1][1][2] = 14
arr[0][1][3] = 11	arr[1][1][3] = 15

轉換成數組格式就是
在這裏插入圖片描述
transpose(0,2,1)就是將第1維度和第2維度交換,也就是將arr[][][]中第1個[]和第二個[]交換,數組維度由原來的(2,2,4)變成(2,4,2);arr[0][1][2]=10換成arr[0][2][1]=10,注意原來的數組沒有arr[0][2][1],所以要生成新的,將arr[0][1][2]去掉,數組的維度也因此發生了變化。

豎着看
arr[0][0][0] = 0	arr[1][0][0] = 8
arr[0][0][1] = 4	arr[1][0][1] = 12 
arr[0][1][0] = 1	arr[1][1][0] = 9
arr[0][1][1] = 5	arr[1][1][1] = 13
arr[0][2][0] = 2	arr[1][2][0] = 10
arr[0][2][1] = 6	arr[1][2][1] = 14
arr[0][3][0] = 3	arr[1][3][0] = 11
arr[0][3][1] = 7	arr[1][3][1] = 15

轉換成數組格式爲
在這裏插入圖片描述

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