Python中axis 0 1問題的解析

2021-09-01 11:24:33 字數 2068 閱讀 2823

** 前言

在numpy的使用中,對axis的使用總是會產生疑問,如np.sum函式,在多維情況下,axis不同的取值應該做怎樣的運算呢?返回的是什麼形狀的陣列呢?在網上查了很多資料,總是似懂非懂,查閱了官方檔案,以及多次試驗後,我總結出一種能深入透徹理解axis用法的說明,配合著np.sum例子。希望大家再也不會對axis的使用產生困惑,即使在高維情況下也信手拈來。

numpy中axis取值的說明

首先對numpy中axis取值進行說明:一維陣列時axis=0,二維陣列時axis=0,1,維數越高,則axis可取的值越大,陣列n維時,axis=0,1,…,n。為了方便下面的理解,我們這樣看待:在numpy中陣列都有著標記,則axis=0對應著最外層的,axis=1對應第二外層的,以此類推,axis=n對應第n外層的。 

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

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

a= np.array([1,2,3])    

a.sum(axis = 0)

>>>612

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

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

a= np.array([[1,2],[3,4]])  

a.sum(axis = 0)

>>>array([4, 6])12

3有兩層,最外層裡的最大單位塊分別為[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]])12

3有三層,最外層裡的最大單位塊分別為[[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 bounds12

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

a= np.array([[1,2],[3,4]])  

a.sum(axis = 1)

>>>array([3, 7])12

3有兩層,第二外層裡的最大單位塊有兩組(因為有兩個第二外層),第一組是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 = 0)

>>>array([[ 4,  6], [24, 26]])12

3有三層,第二外層裡的最大單位塊有兩組(因為有兩個第二外層),第一組是[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也如此分析

看懂了這些說明,相信你對axis已經有了深入的理解,以後再也不用怕高維陣列關於axis的運算了!

python資料分析裡axis 0 1 行列定義

df pd.dataframe 1,1,1,1 2,2,2,2 3,3,3,3 columns col1 col2 col3 col4 df 輸出 col1 col2 col3 col4 0111112 2222 3333 如果我們呼叫df.mean axis 1 我們將得到按行計算的均值 df.m...

Python中axis的意思

對於乙個 5,4,3,2 的陣列data dim 0 5 dim 1 4 dim 2 3 dim 3 2 axis 0,操作時只有第0維的下標變化其他不變,操作結束後變為 4,3,2 axis 1,操作時只有第1維的下標變化其他不變,操作結束後變為 5,3,2 axis 2,操作時只有第2維的下標變...

關於Numpy中的axis問題

由於numpy經常用於處理多維陣列,我們常理解的行和列一般指二維陣列,但對於計算機來說,它只認識下標 一維陣列如a 3 只有乙個下標,axis 0對應陣列的列標,使用axis 1會報錯.對於二維陣列b 2 2 axis 0對應陣列的行標,axis 0對應陣列的行標.對於三維陣列則分別對應頁列行.對應...