1. 程式人生 > >【python】詳解numpy庫與pandas庫axis=0,axis= 1軸的用法

【python】詳解numpy庫與pandas庫axis=0,axis= 1軸的用法

對資料進行操作時,經常需要在橫軸方向或者數軸方向對資料進行操作,這時需要設定引數axis的值:

  • axis = 0 代表對橫軸操作,也就是第0軸;
  • axis = 1 代表對縱軸操作,也就是第1軸;

numpy庫中橫軸、縱軸 axis 引數例項詳解:

In [1]: import numpy as np
#生成一個3行4列的陣列
In [2]: a = np.arange(12).reshape(3,4)
In [3]: a
Out[3]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
#axis= 0 對a的橫軸進行操作,在運算的過程中其運算的方向表現為縱向運算
In [4]: a.sum(axis = 0) Out[4]: array([12, 15, 18, 21]) #axis= 1 對a的縱軸進行操作,在運算的過程中其運算的方向表現為橫向運算 In [5]: a.sum(axis = 1) Out[5]: array([ 6, 22, 38])

pandas庫DataFrame中橫軸、縱軸 axis 引數例項詳解:

In [8]: b = pd.DataFrame(np.arange(24).reshape(4,6))
In [9]: b
Out[9]:
    0   1   2   3   4   5
0   0   1   2   3   4
5 1 6 7 8 9 10 11 2 12 13 14 15 16 17 3 18 19 20 21 22 23 #axis= 0 對b的橫軸進行操作,在運算的過程中其運算的方向表現為縱向運算 In [10]: b.sum(axis = 0) Out[10]: 0 36 1 40 2 44 3 48 4 52 5 56 dtype: int64 #axis= 1 對b的橫軸進行操作,在運算的過程中其運算的方向表現為縱向運算 In [11]: b.sum(axis = 1) Out[11]: 0 15 1 51
2 87 3 123 dtype: int64

這裡寫圖片描述

pandas庫panel中axis 引數例項詳解:

In [18]: np.arange(24).reshape(2,3,4)
Out[18]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
#生成面板資料
In [19]: c = pd.Panel(np.arange(24).reshape(2,3,4))
In [24]: c
Out[24]:
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 4 (minor_axis)
Items axis: 0 to 1
Major_axis axis: 0 to 2
Minor_axis axis: 0 to 3
#對Items axis軸的資料進行操作,也就是panel裡面的0軸:
In [20]: c.sum(axis = 0)
Out[20]:
    0   1   2   3
0  12  14  16  18
1  20  22  24  26
2  28  30  32  34
對Major_axis axis軸的資料進行操作
In [21]: c.sum(axis = 1)
Out[21]:
    0   1
0  12  48
1  15  51
2  18  54
3  21  57
對Minor_axis axis軸的資料進行操作
In [22]: c.sum(axis = 2)
Out[22]:
    0   1
0   6  54
1  22  70
2  38  86

這裡寫圖片描述

如果是2維陣列,先橫軸後縱軸;如果是3維陣列,先最外層,然後一層一層按照先橫軸再縱軸的邏輯進行匹配軸。