Python numpy.transpose 詳解


前言

看Python代碼時,碰見 numpy.transpose 用於高維數組時挺讓人費解,通過一番畫圖分析和代碼驗證,發現 transpose 用法還是很簡單的。

正文

Numpy 文檔 numpy.transpose 中做了些解釋,transpose 作用是改變序列,下面是一些文檔Examples:


代碼1:

x = np.arange(4).reshape((2,2))
  • 1

輸出1:

#x 為: array([[0, 1], [2, 3]])
  • 1
  • 2
  • 3

代碼2:

import numpy as np x.transpose()
  • 1
  • 2

輸出2:

array([[0, 2], [1, 3]])
  • 1
  • 2

對於二維 ndarray,transpose在不指定參數是默認是矩陣轉置。如果指定參數,有如下相應結果: 
代碼3:

x.transpose((0,1))
  • 1

輸出3:

# x 沒有變化 array([[0, 1], [2, 3]])
  • 1
  • 2
  • 3

代碼4:

x.transpose((1,0))
  • 1

輸出4:

# x 轉置了 array([[0, 2], [1, 3]])
  • 1
  • 2
  • 3

這個很好理解: 
對於x,因為:

代碼5:

x[0][0] == 0 x[0][1] == 1 x[1][0] == 2 x[1][1] == 3
  • 1
  • 2
  • 3
  • 4

我們不妨設第一個方括號“[]”為 0軸 ,第二個方括號為 1軸 ,則x可在 0-1坐標系 下表示如下: 
這里寫圖片描述

代碼6:

因為 x.transpose((0,1)) 表示按照原坐標軸改變序列,也就是保持不變 而 x.transpose((1,0)) 表示交換 ‘0軸’ 和 ‘1軸’,所以就得到如下圖所示結果:
  • 1
  • 2

這里寫圖片描述

注意,任何時候你都要保持清醒,告訴自己第一個方括號“[]”為 0軸 ,第二個方括號為 1軸 
此時,transpose轉換關系就清晰了。


我們來看一個三維的: 
代碼7:

import numpy as np # A是array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) A = np.arange(16) # 將A變換為三維矩陣 A = A.reshape(2,2,4) print(A)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

輸出7:

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

我們對上述的A表示成如下三維坐標的形式:

這里寫圖片描述

所以對於如下的變換都很好理解啦: 
代碼8:

A.transpose((0,1,2)) #保持A不變 A.transpose((1,0,2)) #將 0軸 和 1軸 交換
  • 1
  • 2

 0軸 和 1軸 交換:

這里寫圖片描述

此時,輸出

代碼9:

A.transpose((1,0,2)) [0][1][2] #根據上圖這個結果應該是10
  • 1

后面不同的參數以此類推。

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM