Automatisiertes Einlesen von Daten
Verfasst: Dienstag 21. Mai 2019, 13:31
Guten Tag,
zunächst als Vorwarnung: Ich bin ein blutiger Anfänger im Umgang mit Python. Da ich aber allgemein mit Programmiersprachen sowie mit Matlab und Maple Erfahrung habe, sollte das trotzdem ganz gut funktionieren. Und zwar habe ich folgendes Problem:
Ich habe mehrere Textdateien, welche alle etwa "Ne054000.dat" heißen. Es beginnt mit "Ne", danach folgt eine Zahl. Insgesamt sind es knapp 50 Textdateien. Diese gehen von "Ne000000.dat" bis "Ne100000.dat". Die Zahlen dahinter beginnen also mit einer Startzahl X = 0 und gehen dann in Schrittweiten von Y = 2000 weiter bis zum Endzahl Z = 100000. Um die Daten einzulesen, würde ich daher gerne eine Matrix erzeugen, beziehungsweise eine Liste mit Listen. Um dies noch zu erwähnen: in den jeweiligen Textdateien sind keine Koordinatenpaare, sondern einfach eine Folge aus Zahlen.
Ich stelle mir das in etwa so vor:
Ich erzeuge 3 Variablen X,Y,Z, die ich am Start des Programms festlegen möchte. Zum Beispiel: X = 0, Y = 2000, Z = 100000.
Danach möchte ich eine leere (nxm)-Matrix erzeugen. Hierbei ist m die Anzahl der Daten in einem Textdokument und n die Anzahl an Textdokumenten, also n = Z/Y.
Dann sollen die Daten mittels einer Schleife eingelesen werden. Dabei möchte ich bei jedem Durchlauf einen string erzeugen in folgender Form:
for k = 0 to k = m do
DATEINAME = "Ne" + tostring(X+k*Y) + ".dat"
DATEN = numpy.loadtxt(DATEINAME)
MATRIX[k,:] = DATEN[:]
end
Wie zu sehen nutze ich die Bibliothek numpy. Später sollen dann die Daten geplottet werden in der Form:
x = list(range(1,m))
for k = 0 to k = m do
PLOTBILD = pylab.plot(x,MATRIX[k,:])
save(PLOTBILD.png)
end
Was bei mir das Problem ist: Es funktioniert nicht wirklich. Ich vermute, dass es Syntaxfehler sind oder allgemein auch ein Verständnisproblem. Ist es denn möglich einen Dateinamen so zu konstruieren und dann mittels numpy.loadtxt einzulesen? Falls ihr mir hier nicht weiterhelfen könnt, könnt ihr mir vielleicht eine Literatur empfehlen, die mir hierbei helfen kann?
Mit freundlichen Grüßen
Bayro97
zunächst als Vorwarnung: Ich bin ein blutiger Anfänger im Umgang mit Python. Da ich aber allgemein mit Programmiersprachen sowie mit Matlab und Maple Erfahrung habe, sollte das trotzdem ganz gut funktionieren. Und zwar habe ich folgendes Problem:
Ich habe mehrere Textdateien, welche alle etwa "Ne054000.dat" heißen. Es beginnt mit "Ne", danach folgt eine Zahl. Insgesamt sind es knapp 50 Textdateien. Diese gehen von "Ne000000.dat" bis "Ne100000.dat". Die Zahlen dahinter beginnen also mit einer Startzahl X = 0 und gehen dann in Schrittweiten von Y = 2000 weiter bis zum Endzahl Z = 100000. Um die Daten einzulesen, würde ich daher gerne eine Matrix erzeugen, beziehungsweise eine Liste mit Listen. Um dies noch zu erwähnen: in den jeweiligen Textdateien sind keine Koordinatenpaare, sondern einfach eine Folge aus Zahlen.
Ich stelle mir das in etwa so vor:
Ich erzeuge 3 Variablen X,Y,Z, die ich am Start des Programms festlegen möchte. Zum Beispiel: X = 0, Y = 2000, Z = 100000.
Danach möchte ich eine leere (nxm)-Matrix erzeugen. Hierbei ist m die Anzahl der Daten in einem Textdokument und n die Anzahl an Textdokumenten, also n = Z/Y.
Dann sollen die Daten mittels einer Schleife eingelesen werden. Dabei möchte ich bei jedem Durchlauf einen string erzeugen in folgender Form:
for k = 0 to k = m do
DATEINAME = "Ne" + tostring(X+k*Y) + ".dat"
DATEN = numpy.loadtxt(DATEINAME)
MATRIX[k,:] = DATEN[:]
end
Wie zu sehen nutze ich die Bibliothek numpy. Später sollen dann die Daten geplottet werden in der Form:
x = list(range(1,m))
for k = 0 to k = m do
PLOTBILD = pylab.plot(x,MATRIX[k,:])
save(PLOTBILD.png)
end
Was bei mir das Problem ist: Es funktioniert nicht wirklich. Ich vermute, dass es Syntaxfehler sind oder allgemein auch ein Verständnisproblem. Ist es denn möglich einen Dateinamen so zu konstruieren und dann mittels numpy.loadtxt einzulesen? Falls ihr mir hier nicht weiterhelfen könnt, könnt ihr mir vielleicht eine Literatur empfehlen, die mir hierbei helfen kann?
Mit freundlichen Grüßen
Bayro97