gpt4 book ai didi

python - 为什么像 abs 这样的内置函数适用于 numpy 数组?

转载 作者:太空狗 更新时间:2023-10-29 17:13:22 24 4
gpt4 key购买 nike

令我感到惊讶的是 abs 适用于 numpy 数组但不适用于列表。这是为什么?

import numpy as np

abs(np.array((1,-2)))
array([1, 2])

abs([1,-1])
TypeError: bad operand type for abs(): 'list'

此外,sum 等内置函数也适用于 numpy 数组。我猜是因为numpy数组支持__getitem__?但是在 abs 的情况下,如果它依赖于 __getitem__ 它应该也适用于列表,但它没有。

最佳答案

那是因为 numpy.ndarray 实现了 __abs__(self) 方法。只需为您自己的类提供它,abs() 就会神奇地工作。对于非内置类型,您也可以在事后提供此功能。例如

class A:
"A class without __abs__ defined"
def __init__(self, v):
self.v = v

def A_abs(a):
"An 'extension' method that will be added to `A`"
return abs(a.v)

# Make abs() work with an instance of A
A.__abs__ = A_abs

但是,这不适用于内置类型,例如 listdict

关于python - 为什么像 abs 这样的内置函数适用于 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com