写一下numpy与pandas的axis问题

今天写程序的时候发现两个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问题)