1. 程式人生 > >如何快速理解numpy中的axis

如何快速理解numpy中的axis

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保持不變