为什么内置函数abs()不适用于Python列表,而适用于NumPy数组和pandas系列(因为它将被矢量化)?
为什么内置函数abs不能与Python列表一起工作,但可以与NumPy数组和pandas系列一起正常工作 将内置abs函数应用于Python列表会引发一个异常 TypeError:abs的操作数类型错误:“列表” 毫不奇怪,它与文档一致: 阿布克斯 返回数字的绝对值。参数可以是整数或浮点数。 如果参数是复数,则返回其大小 但同一函数的行为与NumPy阵列和熊猫系列的矢量化函数一样正确:为什么内置函数abs()不适用于Python列表,而适用于NumPy数组和pandas系列(因为它将被矢量化)?,python,pandas,numpy,Python,Pandas,Numpy,为什么内置函数abs不能与Python列表一起工作,但可以与NumPy数组和pandas系列一起正常工作 将内置abs函数应用于Python列表会引发一个异常 TypeError:abs的操作数类型错误:“列表” 毫不奇怪,它与文档一致: 阿布克斯 返回数字的绝对值。参数可以是整数或浮点数。 如果参数是复数,则返回其大小 但同一函数的行为与NumPy阵列和熊猫系列的矢量化函数一样正确: In[2]: lst = [2, 0, -1] In[3]: # abs(lst) #
In[2]: lst = [2, 0, -1]
In[3]: # abs(lst) # bad operand type for abs(): 'list'
怎么可能呢?引用的文档已经过时了 Python 3.8.3的版本声明: 阿布克斯 返回数字的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小。如果x定义了uuu abs,则absx返回x.uuuu abs 最后一句是新的,它解释了这个问题:
NumPy ndarray类和pandas系列类都定义了magic uu abs uu方法。引用的文档已过时 Python 3.8.3的版本声明: 阿布克斯 返回数字的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小。如果x定义了uuu abs,则absx返回x.uuuu abs 最后一句是新的,它解释了这个问题:
NumPy ndarray类和pandas系列类都定义了magic u abs uu方法。感谢您指出Python 3.8.3文档。奇怪的是,3.6的文档中省略了_abs____________________________________________。奇怪的是,3.6的文档中省略了_abs_____________________________________。
In[4]: import numpy as np
In[5]: arr = np.array(lst)
In[6]: abs(arr) # no problem
Out[6]: array([2, 0, 1])
In[7]: import pandas as pd
In[8]: s = pd.Series(lst)
In[9]: abs(s) # no problem
Out[9]:
0 2
1 0
2 1
dtype: int64
In[10]: abs.__class__
Out[10]: builtin_function_or_method