Почему обалденные трансценденталы дают ошибку «без атрибута» для целочисленных аргументов больше 2 ^ 64-1? - PullRequest
3 голосов
/ 21 мая 2019

Любопытно, 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: то же значение для других трансцендентных функций с нюансами (sqrt, log10, cos ...)

1 Ответ

2 голосов
/ 21 мая 2019

NumPy не имеет собственного целочисленного значения dtype, достаточного для хранения 2**64, поэтому он получает обработку object dtype. object Обработка типа dtype для numpy.log заключается в поиске метода log на объекте и вызове его, откуда происходит AttributeError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...