"OverflowError: Python int too large, чтобы преобразовать в C long" на windows, но не mac
Я использую тот же самый код как для Windows, так и для Mac, с python 3.5 64 бит.
В окнах это выглядит так:
>>> import numpy as np
>>> preds = np.zeros((1, 3), dtype=int)
>>> p = [6802256107, 5017549029, 3745804973]
>>> preds[0] = p
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
preds[0] = p
OverflowError: Python int too large to convert to C long
Однако этот код отлично работает на моем mac. Может ли кто-нибудь объяснить причину или дать решение для кода на окнах? Большое спасибо!
Ответы
Ответ 1
Вы получите эту ошибку, если ваши цифры больше, чем sys.maxsize
:
>>> p = [sys.maxsize]
>>> preds[0] = p
>>> p = [sys.maxsize+1]
>>> preds[0] = p
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long
Вы можете подтвердить это, установив:
>>> import sys
>>> sys.maxsize
2147483647
Чтобы принимать числа с большей точностью, не передавайте тип int, который использует ограниченное число C за кулисами. Используйте поплавок по умолчанию:
>>> preds = np.zeros((1, 3))
Ответ 2
Вы можете использовать dtype = np.int64 вместо dtype = int
Ответ 3
попробуйте использовать Python 64bit версию