Python 当参数是pandas.Series对象时,为什么numpy.exp返回pandas.Series对象?

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__ 我得到了以下输出: <

使用以下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__
我得到了以下输出:

<type 'list'>  ->  <type 'numpy.ndarray'>
<type 'numpy.ndarray'>  ->  <type 'numpy.ndarray'>
<class 'pandas.core.series.Series'>  ->  <class 'pandas.core.series.Series'>
->
->  
->  
根据
np.exp
的文档,它应该返回
ndarray
。但显然,当参数为pandas
Series
对象时,它返回一个pandas
Series
对象

如果我理解正确的话,numpy甚至不知道
系列
类,因为它是一个较低级别的类,Pandas是建立在它之上的。这里发生了什么奇迹


谢谢;-)

基本上,熊猫团队构建的对象与numpy阵列基本兼容。这是熊猫的设计选择和特色。谢谢保罗。这让我很惊讶。如果我想实现具有类似行为的函数,我该怎么做?对于
列表
ndarry
,函数应返回
ndarray
,当输入为
系列
时,函数应返回
系列
。我无法在函数中使用类
系列
。熊猫的哪个版本?您可能想阅读。谢谢大家。根据Jaime提供的链接,
\uuumpy\ufunc\uumpy
numpy
1.9中的新事物。我使用的是
Numpy
1.8.1和
Pandas
0.13.1,其中
Series
继承自
NDFrame
,而不是
ndarray