numpy vs熊猫轴

时间:2020-06-25 14:50:58

标签: pandas numpy axis

为什么Numpy和Pandas的轴不同?

示例:

如果我想摆脱熊猫的专栏,我可以这样做:

df.drop("column", axis = 1, inplace = True)

在这里,我们使用axis = 1来放置一列(在DF中垂直放置)。

在Numpy中,如果我想垂直求和矩阵A,我将使用:

A.sum(axis = 0)

这里我使用的轴= 0。

2 个答案:

答案 0 :(得分:1)

axispandas中很少使用。数据框具有2个维度,通常将它们区别对待。在drop中,轴的定义有据可查,实际上与numpy的用法相对应。

制作一个简单的数组和数据框:

In [180]: x = np.arange(9).reshape(3,3)                                         
In [181]: df = pd.DataFrame(x)                                                  
In [182]: df                                                                    
Out[182]: 
   0  1  2
0  0  1  2
1  3  4  5
2  6  7  8

从数组或列中删除一行:

In [183]: np.delete(x, 1, 0)                                                    
Out[183]: 
array([[0, 1, 2],
       [6, 7, 8]])
In [184]: np.delete(x, 1, 1)                                                    
Out[184]: 
array([[0, 2],
       [3, 5],
       [6, 8]])

Drop在同一轴上执行相同的操作:

In [185]: df.drop(1, axis=0)                                                    
Out[185]: 
   0  1  2
0  0  1  2
2  6  7  8
In [186]: df.drop(1, axis=1)                                                    
Out[186]: 
   0  2
0  0  2
1  3  5
2  6  8

总而言之,定义也相同:

In [188]: x.sum(axis=0)                                                         
Out[188]: array([ 9, 12, 15])
In [189]: df.sum(axis=0)                                                        
Out[189]: 
0     9
1    12
2    15
dtype: int64
In [190]: x.sum(axis=1)                                                         
Out[190]: array([ 3, 12, 21])
In [191]: df.sum(axis=1)                                                        
Out[191]: 
0     3
1    12
2    21
dtype: int64

熊猫总和为Series,相当于一维数组的熊猫。

使用axis这样的归约运算来可视化sum的操作有些棘手-尤其是对于二维数组。轴是保留还是卸下?考虑一维阵列(唯一的轴被删除)或3d阵列的轴可以帮助考虑,其中一个轴被删除而剩下两个。

答案 1 :(得分:0)

删除列时,将从水平轴1选取名称。沿轴0求和时,即为垂直求和。