對numpy axis(軸)的理解

2021-10-01 12:33:00 字數 1471 閱讀 7325

之前對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., 1., 1.]],

[[1., 1., 1., 1.],

[1., 1., 1., 1.],

[1., 1., 1., 1.]]])

所謂沿著某個軸計算就是將這個軸上的所有元素進行相應計算,以numpy sum函式為例,對於axis=0的情況,就是將0軸上的元素依次相加,其他軸的元素維度保持不變,在上例中0軸上共有兩個元素,分別為arr[0], arr[1],資料如下:

array([[1., 1., 1., 1.],

[1., 1., 1., 1.],

[1., 1., 1., 1.]])

對這兩個元素相加,結果如下:

>>> arr[0] + arr[1]

array([[2., 2., 2., 2.],

[2., 2., 2., 2.],

[2., 2., 2., 2.]])

接下來用sum函式對結果進行驗證。

>>> np.sum(arr, axis=0)

array([[2., 2., 2., 2.],

[2., 2., 2., 2.],

[2., 2., 2., 2.]])

結果完全相同。

利用同樣的方法對axis=1進行驗證,沿著1軸進行計算,實際進行的是0軸保持維度不變,1軸的對應元素進行計算。以上例就是arr[0][0] + arr[0][1] + arr[0][2], arr[1][0] + arr[1][1] + arr[1][2]兩個結果。

還是先用具體元素進行驗證:

>>> arr[0][0] + arr[0][1] + arr[0][2]

array([3., 3., 3., 3.])

>>> arr[1][0] + arr[1][1] + arr[1][2]

array([3., 3., 3., 3.])

再用sum進行驗證

>>> np.sum(arr, axis=1)

array([[3., 3., 3., 3.],

[3., 3., 3., 3.]])

結果還是完全相同,對於axis=2一樣可以得到相同的結果。

總結:numpy函式的axis不能簡單的理解為軸0是行,軸1是列。而應該理解為沿著某個軸,就是對對應維度的元素進行計算,其他維度的元素保持不變。

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

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

numpy 軸的理解

在numpy中關於axis的軸有時會有點暈,這裡做下總結 如果axis 0,表示0軸,第乙個維度 axis 1,表示1軸,第二個維度 有點抽象 本地使用jupyter,設沒注釋的為 輸入,注釋部分為輸出 二維 import numpy as np a np.array 1,2,3 4,5,6 a a...

numpy array軸的理解

最近的學習中,發現可以把軸看成是維度,特地分享給大家,方便理解numpy的陣列運算。如a np.arange 8 reshape 2,4 0 1 2 3 4 5 6 7 此時軸0對應 2,4 中的2,軸1對應 2,4 中的4。用乙個numpy中的函式來檢驗這個想法 numpy.swapaxes 函式...