【Numpy学习记录】np.transpose讲解
??? 想了很久,決定還是追尋大神之路,開始寫寫博客,記錄一下成長之路
??? 廢話不多說,我們開始講正題: what is np.transpose?
1、首先看看二維矩陣:
?
import numpy as nparr = np.arange(30).reshape(5, 6) print(arr) tran_arr = np.transpose(arr, axes=None) print(tran_arr)??????? 輸出結果為:
[[ 0? 1? 2? 3? 4? 5]
?[ 6? 7? 8? 9 10 11]
?[12 13 14 15 16 17]
?[18 19 20 21 22 23]
?[24 25 26 27 28 29]]
[[ 0? 6 12 18 24]
?[ 1? 7 13 19 25]
?[ 2? 8 14 20 26]
?[ 3? 9 15 21 27]
?[ 4 10 16 22 28]
?[ 5 11 17 23 29]]??? 這個結果意料之中,很好理解,就是線性代數的轉置矩陣?
2、再看看多維(三維為例)矩陣
??????????? a.首先,要明確坐標問題
np.arange(12).reshape(2, 2, 3)(2, 2, 3) 分別代表 d,? h,? w
我們不妨繼續看看:
????????
arr = np.arange(12).reshape(2, 2, 3) print(arr[1, 0, 0])輸出結果為:
????????????????6?????? 這下明白了吧,動手實踐,多試幾個
??????????? b. 接下來還要明白一個索引問題
????
| 索引 | |
| 2 | 0 |
| 2 | 1 |
| 3 | 2 |
我們看看代碼:
?
arr = np.arange(12).reshape(2, 2, 3) print(arr) tran_arr = np.transpose(arr, (1, 0, 2)) # (1, 0, 2)即為上面所說的索引號 print(tran_arr)??? 輸出結果:
?[[[ 0? 1? 2]
? [ 3? 4? 5]]
?[[ 6? 7? 8]
? [ 9 10 11]]]
?
[[[ 0? 1? 2]
? [ 6? 7? 8]]
?[[ 3? 4? 5]
? [ 9 10 11]]]
? 這樣就實現了轉置矩陣,但是對于初學者這個例子恐怕遠遠不夠理解,我們換個例子你就懂啦!
?
arr = np.arange(24).reshape(3, 4, 2) print(arr) tran_arr = np.transpose(arr, (1, 0, 2)) print(tran_arr)輸出結果:
????????[[[ 0? 1]
? [ 2? 3]
? [ 4? 5]
? [ 6? 7]]
?[[ 8? 9]
? [10 11]
? [12 13]
? [14 15]]
?[[16 17]
? [18 19]
? [20 21]
? [22 23]]]
?
[[[ 0? 1]
? [ 8? 9]
? [16 17]]
?[[ 2? 3]
? [10 11]
? [18 19]]
?[[ 4? 5]
? [12 13]
? [20 21]]
?[[ 6? 7]
? [14 15]
? [22 23]]]
??????????? 上面的shape 由(3,4,2)變成了(4,3,2),不就是因為索引號由(0,1,2)變成了(1,0,2)嗎?
轉置就是這么簡單!
????
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【Numpy学习记录】np.transpose讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (四)协同过滤算法之基于用户的推荐算法p
- 下一篇: Python函数参数学习