numpy方法中的axis參數理解

https://blog.csdn.net/weixin_43684951/article/details/86365522

1.對於numpy中的二維數組


In[4]中,np.sum(a)沒有指定axis參數值,此時表示將a平鋪成爲一個一維向量求取所有元素的和
In[5]中,np.sum(a, axis=0) 指定axis=0表示按照列來操作,最後得到的結果是每一列的和
In[6]中,np.sum(a, axis=1) 指定axis=1表示按照行來操作,最後得到的結果是每一行的和

2.對於numpy中的三維數組


此矩陣尺寸是 (2, 3, 4) 頁,行,列
In[3]中,np.sum(a)沒有指定axis參數值,此時表示將a平鋪成爲一個一維向量求取所有元素的和
In[4]中,np.sum(a, axis=0) 指定axis=0表示按照頁來操作,最後得到的結果是每一頁對應位置元素的和 輸出(3, 4)
In[5]中,np.sum(a, axis=1) 指定axis=1表示按照列來操作,最後得到的結果是每一頁每一列的和 輸出(2, 4)
In[6]中,np.sum(a, axis=2) 指定axis=2表示按照行來操作,最後得到的結果是每一頁每一行的和 輸出(2, 3)

3.對於參數axis取值的一些個人理解(僅供參考)
個人平時用到的numpy中的數組絕大多數是二維和三維,所以針對上述的理解已經足夠使用;numpy中的很多方法中的axis參數的設置與numpy.sum中的axis參數意義基本上一致,理解上面的例子基本可以應對axis出現的大多數場景

更一般地理解axis參數值是與shape函數的輸出元組中的值有一些聯繫
例1中 a.shape:(3, 4)

當axis=0時,表示在a.shape[0]這一個方向上進行操作,
將具有相同的a.shape[1]方向上的值集中操作,最後的操作結果是消除這一個方向,結果變爲了(4,),而在本例中a是二維數組,a.shape[0]:3,表示的數組行數,那麼消除行的操作,就是按照列來操作,將同一列的元素進行求和;
當axis=1時,同理是爲了消除a.shape[1]這一個方向的操作,結果必然爲(3,),即爲對每一行的數據進行求和。

例2中 a.shape:(2, 3, 4)

當axis=0時,表示在a.shape[0]這一個方向上進行操作,最後的操作結果是消除這一個方向,即將頁這一個方向消除,結果變爲了(3, 4),
而在本例中a是三維數組,a.shape[0]:2,表示的數組頁數,那麼消除頁的操作,就是按照行和列來操作,將具有相同行和列的元素進行求和(就是上文中描述的將每一頁中對應位置的元素求和);當axis=1時,同理是爲了消除a.shape[1]這一個方向的操作,結果必然爲(2, 4),即爲對具有相同頁和列的數據進行求和;同理當axis=2時,同理是爲了消除a.shape[2]這一個方向的操作,結果必然爲(2, 3),即爲對具有相同頁和行的數據進行求和。

總結一下就是:設len(a.shape) = ndim,當axis=n,操作的結果就是要消除第n個維度,將具有相同的其他ndim-1個維度上的元素集中操作,輸出結果的維度爲ndim-1
例如np.sum(a, axis=0) a是二維數組,a[:, 0] a[:, 1] … a[:, a.shape[1]-1] 均爲一個向量,且每一個向量中的元素都具有相同的列,
np.sum(a, axis=0) = [np.sum(a[:, 0]), np.sum(a[:, 1]), …, np.sum(a[:, a.shape[1]-1])] 長度是a.shape[1]
————————————————
版權聲明:本文爲CSDN博主「魏晉小子」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43684951/article/details/86365522

發佈了284 篇原創文章 · 獲贊 75 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章