Numpy的Reshape和Transpose
阿新 • • 發佈:2018-11-01
今天餘凱同學用python在從mat檔案裡面讀取圖片資訊時,遇到一個問題,matlab儲存圖片的時候預設的是(長 * 寬 * 圖片個數),他用python讀出來numpy格式就是(長 * 寬 * 圖片個數),所以讓我幫忙轉換成(圖片個數 * 長 * 寬),好久不用python了,就想當然的用了reshape,後來發現自己把圖片的資訊改變了,最後想了一下是reshape和transpose搞混了,所以寫個小結記錄下。
1.先來說說numpy.reshape吧
還是舉個栗子吧:
data = array( [[ [ 0, 1], [ 2, 3] ], [ [ 4, 5], [ 6, 7] ], [ [ 8, 9], [10, 11] ]]) >> data.reshape(3, 4) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
上面這個栗子就是把一個(3, 2, 2)形狀的陣列,先變成一維陣列,然後在reshape成(3,4)的形狀。
2.該說numpy.transpose了
矩陣的轉置在二維陣列上很好理解,比如:
[[1 2], will become [[1, 3] [3 4]] [2, 4]]
numpy.transpose採取軸作為輸入,所以你可以改變軸,這對於張量來說很有用,也很方便。比如data.transpose(1,0,2),就表示把1位置的數換到0位置,0位置的換到1位置,2沒有變。