Je suis en train de faire une opération de normalisation et, à ma grande surprise, lorsque j'essaie de rétablir l'opération, j'obtiens un décalage de 100% pour la précision 6 décimale par défaut de assert_array_almost_equal
. Pourquoi cela se produit-il? Cela peut-il être dû à la précision de ma valeur maximale? Si oui, comment puis-je obtenir plus de précision dans numpy.ndarray.max()
?Problèmes de précision lors de la restauration de l'opération de normalisation
from __future__ import division
import numpy
_max = numpy.float128(67.1036) # output of numpy.ndarray.max() on an a float32 array
def divide_and_mult(x, y):
return numpy.divide(numpy.float128(x), y) * y
for i in range(100):
try: numpy.testing.assert_array_equal(divide_and_mult(i, _max), numpy.float128(i))
except AssertionError, e: print e
"la précision 6 décimale par défaut de assert_array_equal" <- Je pense que vous devez confondre la fonction 'assert_array_equal' avec quelque chose d'autre. Il n'y a pas de valeur par défaut: 'assert_array_equal' vérifie l'égalité _exact_, sans tolérance. –
Oui, vous avez raison Mark, je faisais référence à la fonction 'assert_array_almost_equal' de numpy.testing que j'ai utilisée dans une autre expérience pour voir le pourcentage de discordance. –