numpy的arccosh的长整数出现AttributeError

时间:2018-06-28 09:36:35

标签: python numpy

在Numpy中使用AttributeError时遇到了意外的arccosh。这就是Python 2:

>>> from numpy import arccosh
>>> arccosh(123456789012345678901)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'long' object has no attribute 'arccosh'

我在Python 3中发现了类似的错误。

降低数字有帮助:

>>> arccosh(12345678901234567890)
44.65298496976247

虽然浮动也有效:​​

>>> arccosh(10**20)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'arccosh'
>>> arccosh(10.**20)
46.74484904044086

其他功能(例如arcsinhlog10sin也会弹出该异常。

我想数字对于numpy.uint64来说太长了

>>> big = np.array([10**18], dtype=np.uint64)
>>> big = np.array([10**20], dtype=np.uint64)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long

并且那个Numpy无法处理numpy.object

>>> big = np.array([10**20], dtype=np.object)
>>> arccosh(big)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'arccosh'

Python acosh模块中的math可以正常工作:

>>> from math import acosh
>>> acosh(10**20)
46.74484904044086

我在这里AttributeError: 'numpy.float64' object has no attribute 'log10'看到了一个解释,所以尽管错误是可以解释的,但还是有些令人惊讶。

0 个答案:

没有答案