为什么numpy先验者对大于2 ^ 64-1的整数参数给出“无属性”错误?

时间:2019-05-21 00:37:54

标签: python python-3.x numpy

奇怪的是,np.log(2**64-1)返回浮点数44.3614196

但是np.log(2**64)返回

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'log' 

问题:

  • 为什么numpy会拒绝大于2 ^ 64-1的参数?
  • 为什么出现错误AttributeError而不是抱怨参数的大小?

fyi:其他numpy超越函数(sqrtlog10cos ...)的相同行为

1 个答案:

答案 0 :(得分:2)

NumPy没有足够大的原生整数dtype来容纳2**64,因此它得到object dtype处理。 object的{​​{1}} dtype处理是在对象上寻找numpy.log方法并调用它,这就是log的来源。