Numpy conversion tableau de float à cordes

J'ai un tableau de chars que j'ai normalisée à un (c'est à dire le plus grand nombre dans le tableau 1), et je voulais l'utiliser comme couleur indices pour un graphique. En utilisant matplotlib à l'utilisation de niveaux de gris, cela nécessite l'utilisation de chaînes de caractères entre 0 et 1, donc j'ai voulu convertir le tableau de flotteurs vers un tableau de chaînes de caractères. J'ai été de tenter de le faire en utilisant "astype('str')", mais cela semble créer quelques valeurs qui ne sont pas les mêmes (ou à proximité) pour les originaux.

Je remarque cela parce que matplotlib se plaint de trouver le numéro 8 dans la matrice, ce qui est étrange qu'il a été normalisée à un!

En bref, j'ai un tableau phis, de float64, tels que:

numpy.where(phis.astype('str').astype('float64') != phis)

est non vide. C'est étonnant comme (je l'espère naïvement) qu'il semble être un bug dans numpy, est-il quelque chose que je pourrait avoir fait du mal à la cause?

Edit: après enquête, cela semble être dû à la façon dont la fonction de chaîne poignées de haute précision des flotteurs. À l'aide d'un vectorisé fonction toString (à partir de robbles de réponse), c'est aussi le cas, cependant, si la fonction lambda est:

lambda x: "%.2f" % x

Alors le graphique fonctionne - curiouser et de curiouser. (Évidemment, les tableaux ne sont plus égales d'ailleurs!)