Python 当参数是pandas.Series对象时,为什么numpy.exp返回pandas.Series对象?
使用以下python代码:Python 当参数是pandas.Series对象时,为什么numpy.exp返回pandas.Series对象?,python,numpy,pandas,Python,Numpy,Pandas,使用以下python代码: s = [0, 1, 2, 3] s_np= randn(5) s_pd = pd.Series(randn(5)) print s.__class__, " -> ", np.exp(s).__class__ print s_np.__class__, " -> ", np.exp(s_np).__class__ print s_pd.__class__, " -> ", np.exp(s_pd).__class__ 我得到了以下输出: <
s = [0, 1, 2, 3]
s_np= randn(5)
s_pd = pd.Series(randn(5))
print s.__class__, " -> ", np.exp(s).__class__
print s_np.__class__, " -> ", np.exp(s_np).__class__
print s_pd.__class__, " -> ", np.exp(s_pd).__class__
我得到了以下输出:
<type 'list'> -> <type 'numpy.ndarray'>
<type 'numpy.ndarray'> -> <type 'numpy.ndarray'>
<class 'pandas.core.series.Series'> -> <class 'pandas.core.series.Series'>
->
->
->
根据np.exp
的文档,它应该返回ndarray
。但显然,当参数为pandasSeries
对象时,它返回一个pandasSeries
对象
如果我理解正确的话,numpy甚至不知道系列
类,因为它是一个较低级别的类,Pandas是建立在它之上的。这里发生了什么奇迹
谢谢;-) 基本上,熊猫团队构建的对象与numpy阵列基本兼容。这是熊猫的设计选择和特色。谢谢保罗。这让我很惊讶。如果我想实现具有类似行为的函数,我该怎么做?对于
列表
和ndarry
,函数应返回ndarray
,当输入为系列
时,函数应返回系列
。我无法在函数中使用类系列
。熊猫的哪个版本?您可能想阅读。谢谢大家。根据Jaime提供的链接,\uuumpy\ufunc\uumpy
是numpy
1.9中的新事物。我使用的是Numpy
1.8.1和Pandas
0.13.1,其中Series
继承自NDFrame
,而不是ndarray
。