avatar

python中axis的理解

简介:

在python中numpy和pandas对于axis的操作方式看上去似乎是矛盾的?也许需要换个角度理解了!

问题的引出

  • 在使用numpy中的np.mean(axis = 1)的时候,计算结果是按照行计算的平均值,如下图所示:

在这里插入图片描述

  • 在使用pandas中的pd.drop(axis = 1)时,丢弃的是某一列的值,如下图所示:

在这里插入图片描述

  • 同样是axis为1,为什么操作不一样?

问题的理解

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

其实并不能这样理解,我们应该把axis等于0看成index,axis为1看成column,如下图所示:

在这里插入图片描述

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操作,因此表现出按行取平均值的结果

文章作者: Dxwell
文章链接: https://dxwell886.github.io/2020/07/19/python%E4%B8%ADaxis%E7%9A%84%E7%90%86%E8%A7%A3/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dxwell的博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论