python axis 0_Python之NumPy(axis=0/1/2...)的透彻理解
https://blog.csdn.net/sky_kkk/article/details/79725646
numpy中axis取值的說明
首先對(duì)numpy中axis取值進(jìn)行說明:一維數(shù)組時(shí)axis=0,二維數(shù)組時(shí)axis=0,1,維數(shù)越高,則axis可取的值越大,數(shù)組n維時(shí),axis=0,1,…,n。為了方便下面的理解,我們這樣看待:在numpy中數(shù)組都有著[]標(biāo)記,則axis=0對(duì)應(yīng)著最外層的[],axis=1對(duì)應(yīng)第二外層的[],以此類推,axis=n對(duì)應(yīng)第n外層的[]。
下面開始從axis=0,axis=1這兩個(gè)例子開始,深入透徹的理解numpy中axis的用法。
axis = 0表示對(duì)最外層[]里的最大單位塊做塊與塊之間的運(yùn)算,同時(shí)移除最外層[]:
a= np.array([1,2,3])
a.sum(axis = 0)
>>>6
123
因?yàn)橹挥幸粚覽],所以直接對(duì)這一層里的最大單位快1,2,3做運(yùn)算;
做完加法后本應(yīng)是[6],但是移除最外層[]后,[]不存在了,所以返回的是6。
a= np.array([[1,2],[3,4]])
a.sum(axis = 0)
>>>array([4, 6])
123
有兩層[],最外層[]里的最大單位塊分別為[1,2],[3,4],對(duì)這兩個(gè)單位塊做塊與塊之間的運(yùn)算,[1,2]+[3,4] = [4, 6];
做完加法后本應(yīng)是[[4, 6]],但是移除最外層[]后,原來的兩層[]變成一層[],所以返回結(jié)果為 [4, 6]。
np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 0)
>>>array([[12, 14], [16, 18]])
123
有三層[],最外層[]里的最大單位塊分別為[[1,2],[3,4]],[[11,12],[13,14]],對(duì)這兩個(gè)單位塊做塊與塊之間的運(yùn)算,[[1,2],[3,4]]? +? [[11,12],[13,14]]? = [[12, 14], [16, 18]];
做完加法后本應(yīng)是[[[12, 14], [16, 18]]],但是移除最外層[]后,原來的三層[]變成兩層[],所以返回結(jié)果為[[12, 14], [16, 18]];
axis= 1表示對(duì)第二外層[]里的最大單位塊做塊與塊之間的運(yùn)算,同時(shí)移除第二外層[]:
a= np.array([1,2,3])
a.sum(axis = 1)
>>>ValueError: 'axis' entry is out of bounds
123
因?yàn)橹挥幸粚覽],axis取值只有一個(gè),為0.
a= np.array([[1,2],[3,4]])
a.sum(axis = 1)
>>>array([3, 7])
123
有兩層[],第二外層[]里的最大單位塊有兩組(因?yàn)橛袃蓚€(gè)第二外層[]),第一組是1,2,第二組是3,4,分別對(duì)這兩個(gè)單位塊做塊與塊之間的運(yùn)算,第一組結(jié)果為1+2=3,第二組結(jié)果為3+4=7;
做完加法后本應(yīng)是[[3],[7]],但是**移除第二外層[]**后,原來的兩層[]變成一層[],所以返回結(jié)果為[3, 7]。
np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 1)
>>>array([[ 4,? 6], [24, 26]])
123
有三層[],第二外層[]里的最大單位塊有兩組(因?yàn)橛袃蓚€(gè)第二外層[]),第一組是[1,2],[3,4],第二組是[11,12],[13,14],分別對(duì)這兩個(gè)單位塊做塊與塊之間的運(yùn)算,第一組結(jié)果為[1,2]+[3,4] = [ 4,? 6],第二組結(jié)果為[11,12]+[13,14] = [24, 26]
做完加法后本應(yīng)是[[[ 4,? 6]], [[24, 26]]],但是**移除第二外層[]**后,原來的三層[]變成兩層[],所以返回結(jié)果為[[ 4,? 6], [24, 26]]
axis = 3,4,5也如此分析
看懂了這些說明,相信你對(duì)axis已經(jīng)有了深入的理解,以后再也不用怕高維數(shù)組關(guān)于axis的運(yùn)算了!
總結(jié)
以上是生活随笔為你收集整理的python axis 0_Python之NumPy(axis=0/1/2...)的透彻理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想全新 ThinkPad E16 笔记
- 下一篇: 常用的算法设计策略有哪些