如何快速理解numpy中的axis
阿新 • • 發佈:2018-11-25
numpy中的axis的設定引數與陣列的shape有關
例如一個shape(3,2,4)的陣列,代表一個三維陣列,要注意的是這裡的維度與物理學的維度的理解是不太一樣的
axis = 0時,就相當於所求的陣列的結果變成shape(2,4)
axis = 1時,陣列的結果shape(3,4)
axis = 2時,陣列的結果shape(3,2)
這裡應該看出來了,當axis=n的時候shape中相應的索引就會被去除,陣列發生了降維,那麼是如何降維的呢
首先要清楚shape裡的數字都代表什麼意義
3代表這個numpy數組裡巢狀著3個數組(有三層), 2代表其中每個陣列的行數,3代表其中每個陣列的列數
理解這個就很簡單了.
假設有個陣列arr1.shape(3,2,4)
arr1.sum(axis=0)那麼首先得出來的結果肯定是個2行4列的陣列,如何計算的呢?
asix=0就是去掉了shape(3,2,4)中的3,相當於不用去考慮陣列的層級關係,直接看成一個整體
把每行和每列對應的元素相加即可,相當於其中一個數組的結果
arr1.sum(axis=1)得出的結果是個shape(3,4)
axis=1就相當於不用考慮每一行的,只考慮每一層和層中的每一列,一共有三層,每一層中的每一列相加即可
arr1.sum(axis=2),得出的結果是三層兩列,不考慮列,只把每一層的每一行相加即可
二維陣列就更簡單了shape(3,4)這是一個三行四列的陣列
sum(axis=0),不考慮行數,把列對應的數相加
最後總結下,axis=n ,就相當於不用考慮n所對應的意義,這個是針對於sum求和,如果是cumsum是不一樣的,那個是累加shape保持不變