我在Windows和Mac上都使用python 3.5 64位运行完全相同的代码。

在Windows上,它看起来像这样:

>>> 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上正常工作。任何人都可以帮助解释原因或提供Windows代码的解决方案吗?非常感谢!

最佳答案

一旦您的数字大于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

要更精确地获取数字,请不要在后台传递使用有界C整数的int类型。使用默认的float:
>>> preds = np.zeros((1, 3))

09-26 15:05