美文网首页我爱编程
写一下numpy与pandas的axis问题

写一下numpy与pandas的axis问题

作者: Alistair | 来源:发表于2017-04-11 17:29 被阅读0次

    今天写程序的时候发现两个axis其实是有区别的,程序如下

    DataFrame

    data.drop('two', axis =1)
    Out[186]: 
       one  three  four
    o    0      2     3
    c    4      6     7
    u    8     10    11
    n   12     14    15
    

    numpy

    arr
    Out[188]: 
    array([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
    
    arr.sum(1)
    Out[189]: array([ 6, 15, 24])
    

    乱了吧,原因是没有理解axis
    简单的来说就是axis=0代表跨行(down) = 列 = 行标签们,而axis=1代表跨列(across) = 行 = 列标签们记住这个就ok了

    换句话说:

    • 使用0值表示沿着每一列或行标签\索引值向下执行方法
    • 使用1值表示沿着每一行或者列标签模向执行对应的方法

    下图代表在DataFrame当中axis为0和1时分别代表的含义:



    另外,记住,Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:

    轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

    回到代码sum(1)行方向,也就是行和,就是跨列
    drop('two', axis = 1),列标签们里面干掉标签叫'two'的
    就这么回事

    参考文章:http://stackoverflow.com/questions/25773245/ambiguity-in-pandas-dataframe-numpy-array-axis-definition
    https://docs.scipy.org/doc/numpy/glossary.html

    相关文章

      网友评论

        本文标题:写一下numpy与pandas的axis问题

        本文链接:https://www.haomeiwen.com/subject/bpjuattx.html