32 votes

Impression de numpy.float64 avec une précision totale

Quelle est la manière correcte/acceptée d'imprimer et de convertir un numpy.float64 en une chaîne de caractères ? J'ai remarqué que l'utilisation de print o str() perdront un peu de précision. Cependant, repr maintient la précision totale. Par exemple :

>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
  1. Je suppose que le simple fait d'appeler print se transforme en appel str() sur l'objet float64. Donc, c'est __str__() pour numpy.float64 mis en œuvre avec quelque chose comme '%s' % (float(self)) ou, d'une manière ou d'une autre, convertit le float64 avec la fonction intégrée de Python float() ? J'ai essayé de regarder rapidement autour de la source numpy pour cela mais ce n'était pas immédiatement évident ce qui se passait.

  2. J'ai toujours pensé repr() devrait retourner un code Python valide qui pourrait être utilisé par eval() pour recréer l'objet. Est-ce une convention acceptée ? Heureusement, dans ce cas, numpy ne suit pas cette convention car repr() retourne juste le nombre brut sous forme de chaîne de caractères au lieu de quelque chose comme "numpy.float64('6374.345407799015')" .

Donc, tout ça me perturbe. Quelle est la manière correcte de convertir un numpy.float64 en une chaîne de caractères et/ou de l'imprimer tout en garantissant que vous avez toujours la même précision complète ?

12voto

Rahiel Kasim Points 320

En astype fonctionne bien :

>>> numpy.float64('6374.345407799015').astype(str)
'6374.345407799015'

10voto

reptilicus Points 3160

Regardez dans numpy.set_printoptions . Plus précisément,

numpy.set_printoptions(precision=15)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X