“OverflowError: Python int trop grand pour convertir C long” sur windows, mais pas de mac
Je suis en cours d'exécution exactement le même code à la fois sur windows et mac, avec python 3.5 64 bits.
Sur windows, il 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
Toutefois, ce code fonctionne très bien sur mon mac. N'importe qui pourrait aider à expliquer pourquoi ou donner une solution pour le code sur windows? Merci beaucoup!
Vous êtes sûr que les deux sont en 64 bits? pouvez-vous tester sur linux?
Même si les deux systèmes sont sur 64 bits Python, sont-ils à la fois sur 64 bits NumPy?
Un autre stackoverflow question explique le "pourquoi". Sur Windows est la durée de 32 bits et sur Unux-comme l'est la durée de 64 bits. Veuillez consulter la question stackoverflow.com/questions/384502/...
Utilisation
Tim: Oui, les deux sont 64 bits. Je n'ai pas une machine linux, désolé. pour user2357112: Oui, les deux sont 64bit python et numpy. pour VladimirM: Merci! Je pense que les questions / réponses de la mienne! pour eryksun: Merci! Il fonctionne!
Même si les deux systèmes sont sur 64 bits Python, sont-ils à la fois sur 64 bits NumPy?
Un autre stackoverflow question explique le "pourquoi". Sur Windows est la durée de 32 bits et sur Unux-comme l'est la durée de 64 bits. Veuillez consulter la question stackoverflow.com/questions/384502/...
Utilisation
dtype='int64'
ou dtype=np.int64
. Le int
type utilise un C long
, qui est toujours en 32 bits sur Windows.Tim: Oui, les deux sont 64 bits. Je n'ai pas une machine linux, désolé. pour user2357112: Oui, les deux sont 64bit python et numpy. pour VladimirM: Merci! Je pense que les questions / réponses de la mienne! pour eryksun: Merci! Il fonctionne!
OriginalL'auteur packybear | 2016-07-11
Vous devez vous connecter pour publier un commentaire.
Vous obtiendrez cette erreur une fois que vos numéros sont supérieurs à
sys.maxsize
:Vous pouvez le confirmer en vérifiant:
De prendre des nombres avec une précision plus grande, ne pas passer un int type qui utilise un délimitée C entier derrière les coulisses. Utilisez la valeur par défaut du flotteur:
Ne pas passer un int dtype, utilisez la valeur par défaut du flotteur.
merci! oui gardé en tant que float
que faire si il doit passé comme un indice qui doit être de type int ?
Je ne comprends pas votre question clairement. L'indice ou de la valeur elle-même? Dans le cas de la valeur, de l'utilisation d'un flotteur. Vous pouvez facilement convertir un int dans la plaine de Python si vous avez besoin de la valeur d'un int.
OriginalL'auteur Moses Koledoye
Vous pouvez utiliser dtype=np.int64 au lieu de dtype=int
OriginalL'auteur sammy ongaya