numpy中的axis與shape有關,shape為乙個tuple,這個tuple的index即為所在的axis。例如乙個ndarray形狀為(4,3,2),則4對應的axis為0,3對應的axis為1,2對應的axis為2。
import numpy as np
x=np.arange(24).reshape(4,3,2)
print(x)
執行結果:
[[[ 0 1]
[ 2 3]
[ 4 5]]
[[ 6 7]
[ 8 9]
[10 11]]
[[12 13]
[14 15]
[16 17]]
[[18 19]
[20 21]
[22 23]]]
也即,最外層括號axis=0,每向內增加一層括號,axis加1。
print(x.max(axis=0))
[[18 19]
[20 21]
[22 23]]
分析:只看最外層括號,最外層括號內是由4個元素組成,每個元素是由乙個3*2的矩陣(二維陣列)組成。求axis=0的最大值即求這四個元素的最大值,因為元素為矩陣(3*2),最大值即矩陣element-wise(對應元素)的最大值。例如四個矩陣中第乙個元素分別為0、6、12、18,所以最大值為18。以此類推:
m ax
([01
2345
]+[6
78910
11]+[
1213
1415
1617]+
[18
1920
212223]
)=[18
1920
212223]
max(\left[ \begin 0 & 1 \\ 2 & 3 \\ 4 & 5 \end \right]+\left[ \begin 6 & 7 \\ 8 & 9 \\ 10 & 11 \end \right]+\left[ \begin 12 & 13 \\ 14 & 15 \\ 16 & 17 \end \right]+\left[ \begin 18 & 19 \\ 20 & 21 \\ 22 & 23 \end \right])=\left[ \begin 18 & 19 \\ 20 & 21 \\ 22 & 23 \end \right]
max(⎣⎡
024
135
⎦⎤
+⎣⎡
6810
791
1⎦⎤
+⎣⎡
121
416
1315
17⎦
⎤+⎣
⎡18
2022
192
123
⎦⎤)
=⎣⎡
1820
221
9212
3⎦⎤
print(x.max(axis=1))
[[ 4 5]
[10 11]
[16 17]
[22 23]]
分析:現在只看axis=0中的每乙個3*2矩陣(二維陣列),每乙個二維陣列是由三個元素(一維陣列)組成。求axis=1的最大值即求三個元素的最大值,因為元素為矩陣(1*2),最大值即矩陣element-wise(對應元素)的最大值。以第乙個矩陣為例:
[[ 0 1],[ 2 3],[ 4 5]]
max
([01
]+[2
3]+[
45])
=[45
]max(\left[ \begin 0 & 1 \\ \end \right]+\left[ \begin 2 & 3 \\ \end \right]+\left[ \begin 4 & 5 \\ \end \right])=\left[ \begin 4 & 5 \\ \end \right]
max([0
1]
+[2
3]+
[45
])=
[45
]其它幾個矩陣求法一樣。
print(x.max(axis=2))
[[ 1 3 5]
[ 7 9 11]
[13 15 17]
[19 21 23]]
分析:現在只看axis=1中的每乙個一維陣列。每乙個一維陣列都是由scalar組成,最大值即為陣列中最大的元素,例:
m ax
([01
])=1
max(
[23]
)=3m
ax([
45])
=5
)max(\left[ \begin 0 & 1 \\ \end \right])=1 \\ max(\left[ \begin 2 & 3 \\ \end \right])=3 \\ max(\left[ \begin 4 & 5 \\ \end \right])=5)
max([0
1]
)=1m
ax([
23
])=3
max(
[45
])=
5)其他求法類似。
理解numpy中的axis
對於m個元素一維陣列a,因為只有乙個軸,所以axis只能為0,和預設值效果相同,觀察的是0軸上0,1,i,m點對應的元素。產生的新集合就乙個元素。舉例 對於mxn的二維陣列 a,axis可以取值0或1。axis 0 相當於平面座標的y軸,變化的是 行 即觀察每一列不同行的元素。產生的新集合,其元素的...
Numpy中axis我的理解
以前我理解axis 0代表行,axis 1代表列 但是這種含義在函式size 和max 中恰恰相反 其實不是這樣的,我們回到單詞axis本身,它的意思是 軸 沒錯軸就是代表乙個方向,像x軸,y軸,如圖所示 axis 0代表的就是x軸方向 axis 1代表的就是y軸方向 這樣函式size 和max 就...
numpy中的axis(軸的理解)
沿著axis指定的軸進行相應的函式操作。如果不知道axis,則把結構體展開成一維,然後再開始計算 import numpy as np print array x x 1,2,3 5,1,2 x np.array x print x print shape x print x.shape print...