2017-02-10 7 views
0

ich eine Datei "data.dat" folgende Daten:Lesen meshgrid Daten aus der Datei in Python

[[0.2 0.3 0.4][0.3 0.2 0.4][0.5 0.3 0.4]] 

Jetzt lese ich diese Daten aus der Datei als

f=open("data.dat","r") 
z=f.read() 
f.close() 

Ich habe x=[1 2 3] & y=[1 2 3] . Ich machte eine meshgrid von x & y als

X,Y=plt.meshgrid(x,y) 

Jetzt versuche ich, Konturdiagramm mit

plt.contourf(X,Y,Z) 

zu tun, aber es zeigt Fehler wie: Valueerror: konnte nicht Zeichenfolge konvertieren zu schweben: [ [0.2 0.3 0.4] [0.3 0.2 0.4] [0.5 0.3 0.4]]

Irgendwelche Vorschläge darüber, wie man Z array als float aus Datei liest oder die Datei "data.dat" auf andere Weise schreibt?

+0

Welche Arten von Elementen sind in x und y gespeichert? –

Antwort

0

Sie lesen eine Zeichenfolge aus der Datei und setzen diese Zeichenfolge auf Z. Aber tatsächlich brauchen Sie ein zweidimensionales Array von Floats anstelle von String. Sie müssen also Ihre Zeichenfolge analysieren. Es kann durch Umwandlung in JSON wie folgt geschehen:

import json 
with open("data.dat") as f: 
    z = f.read() 
z = z.replace(' ', ', ').replace('][', '], [') 
Z = json.loads(z) 

die andere (und besser) Art und Weise JSON verwenden, um Ihre Daten in einer Datei zu speichern.

import json  
Z = [[0.2, 0.3, 0.4], [0.3, 0.2, 0.4], [0.5, 0.3, 0.4]] 
with open("data.dat", 'w') as f: 
    json.dump(Z, f) 

Sie können auch verschiedene Formate wie CSV ausprobieren.

+0

@IIyaV Die Sache ist, ich erzeuge Daten mit einem C++ - Code. Es geht um eine kosmologische Simulation. Ich importierte, exportierte und importierte Daten jedoch, wie Sie mir sagten, aber der gleiche Fehler kommt wieder. Aber ich war in der Lage, das Problem zu lösen, indem ich Datenausgabe neu formte, die Hinweise von hier nimmt: http://stackoverflow.com/questions/6323737/make-a-2d-pixel-plot-with-matplotlib –

Verwandte Themen