Lorsque vous utilisez numpy.power(2,N)
, où N
est un entier, je rencontre la question suivante:Python 3: RuntimeWarning avec numpy.power
In[1] np.power(2,63)
Out[1] -9223372036854775808
RuntimeWarning: invalid value encountered in power
et encore plus étrange,
In[2] np.power(2,63)*2
Out[2] 0
Cela se produit pour tous exposants supérieur ou égal à 63. Je pensais que les grands nombres entiers ne sont pas un problème en Python - qu'est-ce qui ne va pas ici, alors?
Vous n'avez pas ici affaire à des entiers Python, vous avez affaire à des entiers NumPy de taille fixe (64 bits dans ce cas), ce qui est une condition préalable pour les opérations mathématiques vectorisées rapides que fournit NumPy. Si vous voulez utiliser Python ints, écrivez '2 ** 63' ou' pow (2, 63) '. – jasonharper