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這個名稱 當我們呼叫這個方法時,如果類持有的引...