je tentais des choses dans PyCharm j'ai donc écrit un simple morceau de code comprenant:np.arange() ne peut pas être carré correctement
xlist = np.arange(99995,99996)
print(xlist*xlist)
>>> array([1409065433])
Comme vous pouvez le voir, la réponse est incorrecte! Je devrais obtenir 9999000025. Je suis tombé sur cela parce que je l'ai écrit à l'origine:
xlist = np.arange(0,100000)
for x in xlist:
print(x)
z = x * x
print(z)
print(xlist*xlist)
et a obtenu de nombreux résultats étranges, y compris valeurs négatives pour x autour de 90000.
Trois de mes amis testé ce morceau de code et deux ont obtenu les mêmes résultats que moi (sur Windows) et l'autre a eu raison, sous Linux, donc ça semble être dépendant du système d'exploitation ...
Quelqu'un sait ce qui se passe?
Les nombres Python3 sont de précision arbitraire. Les nombres entiers sont de 32 ou 64 bits par défaut, donc ils ne peuvent pas être arbitrairement grands et des débordements peuvent se produire. –
Précisez: 'dtype = np.int64' avant de faire cela. –
@AndrasDeak: Pas nécessairement 64 bits. Cela dépend de la plate-forme. – user2357112