小白學Python 通俗理解axis

2021-10-08 07:16:42 字數 2018 閱讀 3832

axis可以簡單的理解為維度或者軸,比如矩陣(二維陣列)有兩個維度或兩個軸,即行和列,n維陣列有n個維度或n個軸。

當陣列有多個軸時,我們就會對axis進行標號(從0開始),比如axis=0、axis=1、axis=2···

到這裡相信大家都能理解,很多讀者的疑問可能在於:如何知道某個axis對應的是陣列的哪個維度?尤其在使用numpy函式時,假如要對陣列的某個維度進行處理,如何取設定axis的值?比如對於矩陣,axis=0對應行還是列,或者說,np.sum(axis=0)是對各行求和還是對各列求和?

記住這個原則,我們就能迅速理解numpy函式在設定不同的axis時對陣列是如何處理的,下面使用np.sum()進行舉例:

對於矩陣(n,m),當axis=0時,np.sum()之後的矩陣形狀為(m,),即第1維度(軸0)的size變成了0,而其他維度的size不變;當axis=1時,np.sum()之後的矩陣形狀為(n,),即第2維度(軸1)的size變成了0。因此我們很容易明白,np.sum(axis=0)是對矩陣的各列求和,np.sum(axis=1)是對矩陣的各行求和。

注:1維陣列的shape均寫成(n,),其中n是該維的size

a=np.random.randint(0,

3,(3

,4))

print

(a)>>

>[[

1020

][10

12][

1121

]]np.sum

(a,axis=0)

#shape(4,)

>>

>array([3

,1,5

,3])

np.sum

(a,axis=1)

>>

>array([3

,4,5

])#shaoe(3,)

再舉乙個例子:

對於矩陣(l,m,n),當axis=0時,np.sum()之後的矩陣形狀為(m,n),即第1維度(軸0)的size變成了0,而其他維度的size不變;當axis=1時,np.sum()之後的矩陣形狀為(l,n),即第2維度(軸1)的size變成了0;當axis=2時,np.sum()之後的矩陣形狀為(l,m),即第3維度(軸2)的size變成了0。

a=np.random.randint(0,

3,(2

,3,4

))print

(a)>>

>[[

[221

1][1

111]

[020

1]][

[002

0][2

121]

[212

0]]]

np.sum(a,axis=0)

#shape(3,4)

>>

>

array([[

2,2,

3,1]

,[3,

2,3,

2],[

2,3,

2,1]

])np.sum

(a,axis=1)

#shape(2,4)

>>

>

array([[

3,5,

2,3]

,[4,

2,6,

1]])

np.sum

(a,axis=2)

#shape(2,3)

>>

>

array([[

6,4,

3],[

2,6,

5]])

同理,其他包含axis引數的numpy函式都可以用該原則(把對應axis的size變成0)來推出函式返回的陣列的shape,繼而推斷該axis設定值下,函式是按照哪軸進行處理的。

the end ~~

小白學Python(一)

小白學python 一 一 注釋 單行注釋 多行注釋 注 在python2中為了支援中文必須寫中文注釋在第一行 coding utf 8 二 定義變數 語法 變數名 變數值 例 a 10 在第一次為變數賦值為定義變數,第一次之後就為修改變數 變數的型別 1 數字 int 整型 long 長整型 fl...

小白學python 函式1

定義函式 def func print 我是乙個函式 print 函式結束了 呼叫函式 fucn 函式的引數和返回值def hello person print 你好呀!format person print 你看見我家aa了嗎?format person return none p 小v 呼叫函式...

小白理解的單例模式(通俗易懂)

1 單例模式 是一種常用的軟體設計模式,屬於建立型模式的一種。在應用這個模式時,單例物件的類必須保證只有乙個例項存在。2 實現單例模式的思路是 乙個類能返回物件乙個引用 永遠是同乙個 和乙個獲得該例項的方法 必須是靜態方法,通常使用getinstance這個名稱 當我們呼叫這個方法時,如果類持有的引...