J'utilise exactement le même code sous Windows et Mac, avec Python 3.5 64 bits.
Sur Windows, cela ressemble à ceci:
>>> 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
Cependant, ce code fonctionne bien sur mon mac. Quelqu'un pourrait-il aider à expliquer pourquoi ou à donner une solution pour le code sur Windows? Merci beaucoup!
Vous obtiendrez cette erreur une fois que vos nombres seront supérieurs à 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
Vous pouvez le confirmer en vérifiant:
>>> import sys
>>> sys.maxsize
2147483647
Pour prendre des nombres avec une plus grande précision, ne passez pas un type int qui utilise un entier C lié en coulisse. Utilisez le float par défaut:
>>> preds = np.zeros((1, 3))
Vous pouvez utiliser dtype = np.int64 au lieu de dtype = int