搞清axis的含义,这一篇就够了!
文章目錄
- axis的含義
- 旁門(mén)左道式理解
- 二維數(shù)組中的axis
- 三維數(shù)組中的axis
- 正規(guī)理解
axis的含義
在自己分析之前先擺上官方關(guān)于多維數(shù)組中axis的值的定義:
axis = 0,表示第一個(gè)維度
axis = 1,表示第二個(gè)維度
axis = -1,表示最后一個(gè)維度 【二維數(shù)組里axis=1和axis=-1等價(jià)】
以下先分析二維數(shù)組里axis=1和axis=0的區(qū)別,再分析三維數(shù)組里axis=-1,0,1的區(qū)別
PS:可以嘗試先看看正規(guī)理解,如果能理解就不用看旁門(mén)左道式理解了~
旁門(mén)左道式理解
二維數(shù)組中的axis
我們先了解一下關(guān)于axis的一些知識(shí)~
axis用來(lái)為超過(guò)一維的數(shù)組定義屬性。二維數(shù)據(jù)擁有兩個(gè)軸:第0軸沿著行的方向垂直向下,第1軸沿著列的方向水平延申。1表示橫軸,方向從左到右;0表示縱軸,方向從上到下。當(dāng)axis=1時(shí),數(shù)組的變化是橫向的,體現(xiàn)出列的增加或者減少。反之,當(dāng)axis=0時(shí),數(shù)組的變化是縱向的,體現(xiàn)出行的增加或減少。
結(jié)合例子來(lái)看:
根據(jù)第二張圖我們來(lái)理解axis,簡(jiǎn)單來(lái)講,0軸沿著行的方向垂直向下豎著加,1軸沿著列的方向水平延申橫著加。
三維數(shù)組中的axis
摸著良心講二維數(shù)組中axis真的是很好理解,三維數(shù)組中axis難以理解的地方在于,三維數(shù)組的[]太多了!所以在理解的時(shí)候很容易懵。話(huà)不多說(shuō),進(jìn)入正題~
先看一組例子:
a = np.array([[[0, 1, 44], [3, 4, 25], [6, 7, 88]],[[9, 50, 11], [12, 73, 14], [15, 66, 17]],[[78, 19, 20], [91, 22, 23], [84, 25, 26]]]) print("a=", a) b = np.max(a, axis=0) print("b=", b)運(yùn)行結(jié)果:
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[78 50 44][91 73 25][84 66 88]]把a(bǔ) = np.max(b, axis=0) 改成a = np.max(b, axis=1),則運(yùn)行結(jié)果如下:
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[ 6 7 88][15 73 17][91 25 26]]把a(bǔ) = np.max(b, axis=0) 改成a = np.max(b, axis=-1),則運(yùn)行結(jié)果如下:
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[44 25 88][50 73 66][78 91 84]]用第一個(gè)維度、第二個(gè)維度、最后一個(gè)維度來(lái)理解axis是很抽象的,所以本文用去掉[]的方式來(lái)幫助大家理解axis
三維數(shù)組是這樣表示出來(lái)的
[[[]
[]
[]]
[[]
[]
[]]
[[]
[]
[]]]
而對(duì)數(shù)組進(jìn)行操作是根據(jù)[]劃分的范圍來(lái)決定的
axis = 0,表示去掉[]之后進(jìn)行max操作
去掉之后長(zhǎng)這樣:
[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]也就是把一個(gè)三維數(shù)組分成了三個(gè)二維數(shù)組,則在找出最大值時(shí)(執(zhí)行max時(shí)),是將三個(gè)二維數(shù)組每個(gè)相同位置的元素進(jìn)行比較,最終取三個(gè)之中最大的作為該位置的最終值。
【0,9,78中取78,1,50,19中取50…以此類(lèi)推】
axis = 1,表示去掉[]之后進(jìn)行max操作
去掉之后長(zhǎng)這樣:
[[ 0 1 44][ 3 4 25][ 6 7 88][ 9 50 11][12 73 14][15 66 17][78 19 20][91 22 23][84 25 26]]也就變成了三個(gè)元素為一個(gè)“小組”的9個(gè)小組,從前三個(gè)小組里每個(gè)相同位置的元素中選出最大值作為最終結(jié)果里第一行對(duì)應(yīng)位置的最終值;從中間三個(gè)小組里每個(gè)相同位置的元素中選出最大值作為最終結(jié)果里第二行對(duì)應(yīng)位置的最終值;從后三個(gè)小組里每個(gè)相同位置的元素中選出最大值作為最終結(jié)果里第三行對(duì)應(yīng)位置的最終值。
【以中間三組為例:9,12,15中選取15賦值到第二行第一個(gè)位置;50,73,66中選取73第二行第二個(gè)位置;11,14,17中選取17第二行第三個(gè)位置】
axis = -1,表示去掉[]之后進(jìn)行max操作
去掉之后長(zhǎng)這樣:
[[ 0 1 443 4 256 7 88][ 9 50 1112 73 1415 66 17][78 19 2091 22 2384 25 26]]可以看出每個(gè)元素現(xiàn)在已經(jīng)“各自為戰(zhàn)”了,不同于之前的各個(gè)二維數(shù)組相同位置的元素;每個(gè)小組相同位置的元素;他們只能以元素的身份和別的元素去比較。
第一行的元素比較結(jié)果作為第一行第一列的最終值,第二行的元素比較結(jié)果作為第一行第二列的最終值……第四行的元素比較結(jié)果作為第二行第一列的最終值……以此類(lèi)推。
【78,19,20中取78賦值到第三行第一個(gè)位置,91,22,23中取91賦值到第三行第二個(gè)位置,84,25,26中取84賦值到第三行第三個(gè)位置】
b= [[44 25 88][50 73 66][78 91 84]]正規(guī)理解
其實(shí)用維度理解挺好理解的
如果用x,y,z表示三維數(shù)組的三個(gè)維度
axis = 0時(shí),確定最終二維數(shù)組的yi,zi時(shí),也就是(x0,yi,zi)、(x1,yi,zi)、(x2,yi,zi)三個(gè)點(diǎn)的值作比較,取最大的放到(yi,zi)。
【確定(y1,z1)時(shí),比較(x0,y1,z1)=4、(x1,y1,z1)=73、(x2,y1,z1)=22】
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[78 50 44][91 73 25][84 66 88]]axis = 1時(shí),確定最終二維數(shù)組的xi,zi時(shí),也就是(xi,y0,zi)、(xi,y1,zi)、(xi,y2,zi)三個(gè)點(diǎn)的值作比較,取最大的放到(xi,zi)。
【確定(x1,z1)時(shí),比較(x1,y0,z1)=50、(x1,y1,z1)=73、(x1,y2,z1)=66】
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[ 6 7 88][15 73 17][91 25 26]]axis = -1時(shí),確定最終二維數(shù)組的xi,yi時(shí),也就是(xi,yi,z0)、(xi,yi,z1)、(xi,yi,z2)三個(gè)點(diǎn)的值作比較,取最大的放到(xi,yi)。
【確定(x1,y1)時(shí),比較(x1,y1,z0)=12、(x1,y1,z1)=73、(x1,y1,z2)=14】
a= [[[ 0 1 44][ 3 4 25][ 6 7 88]][[ 9 50 11][12 73 14][15 66 17]][[78 19 20][91 22 23][84 25 26]]] b= [[44 25 88][50 73 66][78 91 84]] 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的搞清axis的含义,这一篇就够了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++之“偏正短语”
- 下一篇: 腾讯校招历年经典面试汇总:C++研发岗