Python:numpy中的軸和pandas中的軸

由於對於這裏面當中的理論不是太懂,所以我會直接從一個例子入手。

1.Numpy中的軸

先以2維數組爲例

import numpy as np
#創建一個三維數組
data=np.arange(24).reshape(4,6)
print(data)

代碼輸出結果如下:

爲了方面展示,我們將2維數組的元素及其索引都通過下面的表格展示出來。具體如下:

0  [0,0] 1 [0,1] 2 [0,2] 3 [0,3] 4 [0,4] 5 [0,5]
6 [1,0] 7 [1,1] 8 [1,2] 9 [1,3] 10 [1,4] 11 [1,5]
12 [2,0] 13 [2,1] 14 [2,2] 15 [2,3] 16 [2,4] 17 [2,5]
18 [3,0] 19 [3,1] 20 [3,2] 21 [3,3] 22 [3,4] 23 [3,5]

下面我們將data中的shape和axis之間的關係:

  • 上述代碼中的shape中的(4,6),其中4代表的是axis=0軸上的維度,而6對應的是axis=1軸上的維度。

下面我們來看看按軸求和之後的結果。

data_axis0=data.sum(axis=0)
data_axis1=data.sum(axis=1)
print(data_axis0)
print(data_axis1)
  • 先來看按axis=0軸合併之後的結果(data_axis0)
36 40 44 48 52 56

下面來具體的看看以上的結果是如何計算出來的:(下面僅以36和40的計算過程爲例)

36=0[0,0]+6[1,0]+12[2,0]+18[3,0] ,可以發現,這些元素在axis=0上的索引不同,而在axis=1軸上的索引是相同的。

40=1 [0,1]+7[1,1]+13[2,1]+19[3,1], 可以發現,這些元素在axis=0軸上索引不同,但是在axis=1軸上的索引是相同的。

  • 再來看按axis=1軸合併之後的結果(data_axis1)
15 51 87 123

15=0[0,0]+1[0,1]+2[0,2]+3[0,3]+4[0,4]+5[0,5] ,可以發現這些元素在axis=0軸上的索引相同,而在axis=1軸上的索引不同。

51=6[1,0]+7[1,1]+8[1,2]+9[1,3]+10[1,4]+11[1,5],可以發現這些元素在axis=0軸上的索引相同,而在axis=1軸上的索引不同。

綜上可以發現,numpy中按axis=i軸進行合併操作的時候,而相當於將所有其他軸上的索引相同的元素進行合併。

2.Pandas中的軸

import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(24).reshape(4,6),index=list('1234'),columns=list('ABCDEF'))
print(df)
df_axis0=df.sum(axis=0)
print(df_axis0)
df_axis1=df.sum(axis=1)
print(df_axis1)

代碼運行結果如下:

axis=0軸進行合併的結果:

 axis=1軸進行合併的結果:

所以在pandas中axis=0實際上是映射到column上的,而axis=1映射到index上,僅就這兩個軸的反向,pandas與numpy是相反的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章