Numpy裡axis的理解

2021-10-08 07:31:13 字數 2169 閱讀 1207

原文

在numpy中陣列都有著標記,則axis=0對應著最外層的,axis=1對應第二外層的,以此類推,axis=n對應第n+1外層的。

下面開始從axis=0,axis=1這兩個例子開始,深入透徹的理解numpy中axis的用法。

axis = 0表示對最外層裡的最大單位塊做塊與塊之間的運算,同時移除最外層

a= np.array([1

,2,3

])

a.sum

(axis =0)

>>

>

6

因為只有一層,所以直接對這一層裡的最大單位快1,2,3做運算;

做完加法後本應是[6],但是移除最外層後,不存在了,所以返回的是6。

a= np.array([[

1,2]

,[3,

4]])

a.sum

(axis =0)

>>

> array([4

,6])

有兩層,最外層裡的最大單位塊分別為[1,2],[3,4],對這兩個單位塊做塊與塊之間的運算,[1,2]+[3,4] = [4, 6];

做完加法後本應是[[4, 6]],但是移除最外層後,原來的兩層變成一層,所以返回結果為 [4, 6]。

np.array([[

[1,2

],[3

,4]]

,[[11

,12],

[13,14

]]])

a.sum

(axis =0)

>>

> array([[

12,14]

,[16,

18]])

有三層,最外層裡的最大單位塊分別為[[1,2],[3,4]],[[11,12],[13,14]],對這兩個單位塊做塊與塊之間的運算,[[1,2],[3,4]] + [[11,12],[13,14]] = [[12, 14], [16, 18]];

做完加法後本應是[[[12, 14], [16, 18]]],但是移除最外層後,原來的三層變成兩層,所以返回結果為[[12, 14], [16, 18]];

axis= 1表示對第二外層裡的最大單位塊做塊與塊之間的運算,同時移除第二外層:

a= np.array([1

,2,3

])

a.sum

(axis =1)

>>

> valueerror:

'axis' entry is out of bounds

因為只有一層,axis取值只有乙個,為0.

a= np.array([[

1,2]

,[3,

4]])

a.sum

(axis =1)

array([3

,7])

有兩層,第二外層裡的最大單位塊有兩組(因為有兩個第二外層),第一組是1,2,第二組是3,4,分別對這兩個單位塊做塊與塊之間的運算,第一組結果為1+2=3,第二組結果為3+4=7;

做完加法後本應是[[3],[7]],但是移除第二外層後,原來的兩層變成一層,所以返回結果為[3, 7]。

np.array([[

[1,2

],[3

,4]]

,[[11

,12],

[13,14

]]])

a.sum

(axis =1)

>>

> array([[

4,6]

,[24,

26]])

有三層,第二外層裡的最大單位塊有兩組(因為有兩個第二外層),第一組是[1,2],[3,4],第二組是[11,12],[13,14],分別對這兩個單位塊做塊與塊之間的運算,第一組結果為[1,2]+[3,4] = [ 4, 6],第二組結果為[11,12]+[13,14] = [24, 26]做完加法後本應是[[[ 4, 6]], [[24, 26]]],但是移除第二外層後,原來的三層變成兩層,所以返回結果為[[ 4, 6], [24, 26]]

axis = 3,4,5也如此分析

懂?祝好

理解numpy中的axis

對於m個元素一維陣列a,因為只有乙個軸,所以axis只能為0,和預設值效果相同,觀察的是0軸上0,1,i,m點對應的元素。產生的新集合就乙個元素。舉例 對於mxn的二維陣列 a,axis可以取值0或1。axis 0 相當於平面座標的y軸,變化的是 行 即觀察每一列不同行的元素。產生的新集合,其元素的...

numpy中axis的通俗理解

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

Numpy中axis我的理解

以前我理解axis 0代表行,axis 1代表列 但是這種含義在函式size 和max 中恰恰相反 其實不是這樣的,我們回到單詞axis本身,它的意思是 軸 沒錯軸就是代表乙個方向,像x軸,y軸,如圖所示 axis 0代表的就是x軸方向 axis 1代表的就是y軸方向 這樣函式size 和max 就...