2016-05-18 6 views
0

Ich habe ein numpy Array mit 3 Elementen; Von diesem Array möchte ich eine Liste erstellen, in der jedes Element in wissenschaftlicher Notation steht, und nicht ein String. Es scheint, als sollte es einfach sein, aber ich habe Probleme damit. Meine aktuelle Skript ist wie folgt:Erstellen Sie eine Liste von Elementen, mit jedem Element mit wissenschaftlicher Notation

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)) 

Ausgang ist:

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

Wie kann ich halte wissenschaftliche Schreibweise für jedes Element, und einen nicht-string Elementtyp?

Bearbeiten: Das Ziel besteht darin, eine Eingabedatei zu erstellen, damit die Formatierung der Formatierung einer bekannten Eingabedatei entspricht. Mein idealer Ausgang ist wie folgt:

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

Entfernen ['%.9e' % x for x in ary] gibt mir die folgenden, ohne die wissenschaftliche Notation, die ich suche:

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

Nur herumwandern, warum brauchst du das? Wenn Sie mathematische Operationen ausführen, können Sie das Ergebnis in wissenschaftliche Notation konvertieren, nachdem Sie es erhalten haben. – sbowde4

+0

@ sbowde4 - Ich schreibe eine Eingabedatei und versuche, die Formatierung einer vorhandenen Eingabedatei anzupassen. – AaronJPung

Antwort

0

Sie sind tatsächlich die Float-Liste konvertieren, ary, in einer String-Liste, wenn Sie

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

tun würde es wahrscheinlich die Genauigkeit des numpy float-Array in Ihrer weiteren Berechnung und dann Format auf neue Rechnung vorzutragen am besten t Die Anzahl der signifikanten Stellen, die Sie am Ende für die Ausgabe benötigen/wollen.

Verwandte Themen