2016-05-18 1 views
0

J'ai un tableau numpy avec 3 éléments; à partir de ce tableau, je voudrais créer une liste où chaque élément est en notation scientifique, et pas une chaîne. Cela semble que ça devrait être facile, mais j'ai des problèmes avec ça. Mon script actuel est la suivante:Créer une liste d'éléments, avec chaque élément avec une notation scientifique

import numpy as np 

ary = np.array([2.124598e+00, 9.1542e+00, 1.049e+00]) 
ary = ary.astype(np.float) 
ary = ary.tolist() 
ary = ['%.9e' % x for x in ary] 
print(ary) 
print(type(ary)) 

sortie est:

['2.124598000e+00', '9.154200000e+00', '1.049000000e+00'] 
<type 'list'> 

Comment puis-je maintenir la notation scientifique pour chaque élément, et un type d'élément non-chaîne? Edit: Le but ici est de créer un fichier d'entrée, de sorte que le formatage est fait pour correspondre à la mise en forme d'un fichier d'entrée connu. Ma sortie idéale est la suivante:

[2.124598000e+00, 9.154200000e+00, 1.049000000e+00] 
<type 'list'> 

Suppression ['%.9e' % x for x in ary] me donne ce qui suit, sans la notation scientifique que je suis à la recherche:

[2.124598, 9.1542, 1.049] 
<type 'list'> 
+1

Juste errant, pourquoi avez-vous besoin de cela? Si vous faites des opérations mathématiques, vous pouvez convertir le résultat en notation scientifique après l'avoir obtenu. – sbowde4

+0

@ sbowde4 - J'écris un fichier d'entrée, et j'essaie de faire correspondre la mise en forme d'un fichier d'entrée existant. – AaronJPung

Répondre

0

Vous convertissez en fait la liste flottante, Ary, à une liste de chaînes lorsque vous faites

ary = ['%.9e' % x for x in ary] 

Il serait sans doute préférable de faire avancer la précision du réseau de flotteurs numpy dans vos autres calculs et format à t Le nombre de chiffres significatifs dont vous avez besoin à la fin pour la sortie.