numpy 转置_Numpy基础:数组转置和轴对换
轉(zhuǎn)置(transpose)是重塑的一種特殊形式,它返回的是源數(shù)據(jù)的視圖(不會(huì)進(jìn)行任何復(fù)制操作)。數(shù)組不僅有transpose方法,還有一個(gè)特殊的T屬性。
In[70]:arr=np.arange(15).reshape((3,5))
In[71]:arr
Out[71]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
In[72]:arr.T
Out[72]:
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
在進(jìn)行矩陣計(jì)算時(shí),經(jīng)常需要用到該操作,比如利用np.dot計(jì)算矩陣內(nèi)積XTX:
In[73]:arr=np.random.randn(6,3)
In[74]:np.dot(arr.T,arr)
Out[74]:
array([[ 14.91087193, -7.57347777, -0.56395378],
[ -7.57347777, 6.79559058, 3.99068128],
[ -0.56395378, 3.99068128, 9.8351215 ]])
對(duì)于高維數(shù)組,transpose需要得到一個(gè)由軸編號(hào)組成的元組才能對(duì)這些軸進(jìn)行轉(zhuǎn)置(比較費(fèi)腦子):
In[75]:arr=np.arange(16).reshape((2,2,4))
In[76]:arr
Out[76]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
In[77]:arr.transpose((1,0,2))
Out[77]:
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
簡(jiǎn)單的轉(zhuǎn)置可以使用.T,它其實(shí)就是進(jìn)行軸對(duì)換而已。Ndarray還有一個(gè)swapaxes方法,它需要接受一對(duì)軸編號(hào)。
In[78]:arr
Out[78]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
In[79]:arr.swapaxes(1,2)
Out[80]:
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
swapaxes也是返回源數(shù)據(jù)的視圖(不會(huì)進(jìn)行任何復(fù)制操作)。
親,如果筆記對(duì)您有幫助,收藏的同時(shí),記得給點(diǎn)個(gè)贊、加個(gè)關(guān)注哦!感謝!」
「誠(chéng)邀關(guān)注“issnail”,會(huì)有驚喜哦!」
「文中代碼均親測(cè)過(guò),若有錯(cuò)誤之處,歡迎批評(píng)指正,一起學(xué)習(xí),一起成長(zhǎng)!」
參考書目:利用python進(jìn)行數(shù)據(jù)分析
總結(jié)
以上是生活随笔為你收集整理的numpy 转置_Numpy基础:数组转置和轴对换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机多文件管理,电脑文件管理几条小技巧
- 下一篇: python中难的算法_一个python