NumPy(axis 0 1 2 )的透徹理解

2021-10-02 03:04:42 字數 1872 閱讀 2868

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)

>>>6

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

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

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

a.sum(axis = 0)

>>>array([4, 6])

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

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

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

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

a.sum(axis = 1)

>>>array([3, 7])

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

123有三層,第二外層裡的最大單位塊有兩組(因為有兩個第二外層),第一組是[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的運算了!

對numpy axis(軸)的理解

之前對numpy函式中axis引數所指向的資料一直無法完全理解,但是接觸過跨度的概念之後,對axis引數所指向的資料才有所理解。以numpy.sum函式為例,初始化乙個維度為2 3 4維的全一矩陣,如下 arr np.ones 2,3,4 結果如下 array 1.1.1.1.1.1.1.1.1.1...

Shell之 0, 1, 2的含義

touch test.sh bin sh echo shell指令碼本身的名字 0 echo 傳給shell的第乙個引數 1 echo 傳給shell的第二個引數 2 執行時 0 代表檔名 test.sh 1 代表輸入的第乙個引數 2 代表輸入的第二個引數 admindemacbook pro ad...

Shell中的 0 1 2的含義

在shell中我們會見到 0 1 2這樣的符號,這是什麼意思呢?簡單來說 0就是你寫的shell指令碼本身的名字,1是你給你寫的shell指令碼傳的第乙個引數,2是你給你寫的shell指令碼傳的第二個引數 比如你新建了乙個shell指令碼 test.sh,內容如下 bin sh echo shell...