Python 为什么np.clip(pd.Series(范围(10)),2,3)返回一个序列?
Python 为什么np.clip(pd.Series(范围(10)),2,3)返回一个序列?,python,numpy,pandas,Python,Numpy,Pandas,类型(np.clip(pd.Series(范围(10)),2,3))是一种pd.Series type(np.clip(范围(10),2,3))是一个np.array 为什么pd.Series可以在应用numpy函数后保留其类型?pd.Series有一个clip方法() np.clip()遵从第一个参数的clip方法,如果它有一个: def clip(a, a_min, a_max, out=None): try: clip = a.clip except Att
类型(np.clip(pd.Series(范围(10)),2,3))
是一种pd.Series
type(np.clip(范围(10),2,3))
是一个np.array
为什么
pd.Series
可以在应用numpy
函数后保留其类型?pd.Series
有一个clip方法()
np.clip
()遵从第一个参数的clip
方法,如果它有一个:
def clip(a, a_min, a_max, out=None):
try:
clip = a.clip
except AttributeError:
return _wrapit(a, 'clip', a_min, a_max, out)
return clip(a_min, a_max, out)
Series.clip
方法返回一个pd.Series
,因此np.clip
返回一个pd.Series
。
当然,这也表明您可以使用
pd.Series(range(10)).clip(2, 3)
而不是
np.clip(pd.Series(range(10)), 2, 3)
这是一个“鸭子打字”的例子(如果它表现得像鸭子,它就会像鸭子一样嘎嘎叫……它就是鸭子!)。如果具有相同接口(例如,相同方法名)的对象可以以相同的方式处理,那么我们可以从代码中获得更多收益 因为
pd.Series
中的基础值是np.array
<代码>类型(np.clip(pd.Series(范围(10)).values,2,3))给出numpy.ndarray
@JianxunLi我知道我可以使用.value,但numpy怎么知道?
np.clip(pd.Series(range(10)), 2, 3)