python中关于axis容易混淆的理解

问题的引出

  • 在使用numpy中的np.mean(axis = 1)的时候,计算结果是按照行计算的平均值,如下图所示:
    python中关于axis容易混淆的理解
  • 在使用pandas中的pd.drop(axis = 1)时,丢弃的是某一列的值,如下图所示:
    python中关于axis容易混淆的理解
  • 同样是axis为1,为什么操作不一样?

问题的理解

以前学习到这里似乎是强行记忆的,axis为0的时候是按照列来进行计算,axis为1是按照行来计算,直到出现上述矛盾。

其实并不能这样理解,我们应该把axis等于0看成index,axis为1看成column,如下图所示:
python中关于axis容易混淆的理解
row0-row2是索引值index,col0-col4是列值column,axis=0表示按照index进行操作,axis=1表示按照column进行操作。

说完这个之后开始理解上面的问题:

  • 在pandas中,df.drop(axis = 1)表示对column进行操作,也就是丢掉某一列,这个没问题

  • 在numpy中,a.mean(axis = 1)也是表示对column进行操作,但是这里因为是求平均值,所以是对所有的列进行平均值求取,因此我们看到的结果是每一行的平均值

  • 上述两者的区别是pandas的drop是单项column操作,numpy的mean是多个column操作,因此表现出按行取平均值的结果