由于对于这里面当中的理论不是太懂,所以我会直接从一个例子入手。
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是相反的。