python+numpy:为什么numpy.log如果操作数太大,会抛出属性错误



Running

np.log(math.factorial(21))

抛出AttributeError: log.为什么?我可以想象一个ValueError,或者某种UseYourHighSchoolMathsError,但为什么属性错误?

math.factorial(21)的结果

是 Python 长。 numpy 无法将其转换为其数字类型之一,因此将其保留为 dtype=object 。一元 ufuncs 对对象数组的工作方式是,它们只是尝试在对象上调用同名的方法。例如

np.log(np.array([x], dtype=object)) <-> np.array([x.log()], dtype=object)

由于 Python long 上没有.log()方法,因此您可以得到AttributeError

更喜欢math.log()函数,它甚至可以在长整数上完成工作。

相关内容

最新更新