numpy中axis的通俗理解

2021-09-24 18:11:33 字數 2778 閱讀 1103

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

22​1

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​]+

[4​5

​])=

[4​5

​]其它幾個矩陣求法一樣。

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([

2​3​

])=3

max(

[4​5

​])=

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...