先知
維度在理解axis之前,我們應該理解維度的含義:通常的理解是:「點是0維、直線是1維、平面是2維、體是3維」。在機器學習中我們常常處理幾十維的數據,對於機器學習常用的Numpy庫,當我們賦予二維數組每一行一個值的時候,那麼此時二維數組的列數就是多維空間的維度。每一行給的值通常是我們的樣本值,它也是損失函數準確度的一個依據。
# 構造數組,該行列式給予樣本值將變為4維空間two = np.arange(9).reshape(3,3)two---array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])# 查看維度two.ndim---2axis那麼問題來了,我們應該怎麼理解Numpy和Pandas(axis概念全部繼承於Numpy),當一個數組上升到二維我們需要考慮是對行操作還是對列操作,那麼如果上升為3維數組呢,沒錯,還會多出來一個axis:2。到這裡你應該明白,axis其實就是對數組層數的操作,ndim是幾,那麼對應的axis就有幾個,下面看一張圖,或許你就會明白。
操作
通俗理解(二維數組)當axis=0的時候,即對第一層進行操作,此時Numpy只對第一層內的數組進行操作,即axis執行方向從上到下;當axis=1的時候,即對第二層進行操作,此時Numpy只對第二層內的數組進行操作,即axis執行方向從左到右。
再次理解看下面的圖,這裡的理解是,當axis=0的時候,從上到下以列為整體;當axis=1的時候,從左往右以行為整體。
特殊
Dataframe下面我們再次對其理解,看下圖的紅線部分axis=1,此時我們可以理解為當axis=1的時候是把列作為整體進行操作的,而當 axis=0也就是紅線部分,我們把其看作是以行為整體操作的,numpy默認為行,因為這樣保證數據的原始性。
drop這個可以認為是特殊的,但記住一點當axis=0的時候是從上往下的,dorp指出了要刪除iloc為1的行,那麼此時便會從上往下進行刪除,即以列為單位刪除整行;同理axis=1,從左往右推薦,當column='C'的滿足條件,整列刪除。
總結
說了這麼多,你要記住的就是,axis=0的時候一定是從上往下的;axis=1的時候肯定是從左往右。
參考文檔
pandas axis的用法關於pandas中axis屬性的一點理解感受
希望大家可以慢慢領悟!:)
武漢加油!湖北加油!中國加油!大家加油!