简介:
在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操作,因此表现出按行取平均值的结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dxwell的博客!
评论