Automatisiertes Einlesen von Daten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Bayro97
User
Beiträge: 6
Registriert: Dienstag 21. Mai 2019, 12:53

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
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bayro97: Wie kann man denn *vermuten* dass es einen Syntaxfehler gibt? Das sagt die Fehlermeldung ziemlich deutlich…

Und ich denke ``for``-Schleifen sollte man sich schon selbst aneignen, also einfach mal das Grundlagentutorial in der Python-Dokumentation durcharbeiten.

`tostring()` gibt's nicht. Zeichenkettenverarbeitung wird auch in der Dokumentation/im Tutorial behandelt.

Bei ``DATEN[:]`` ist das ``[:]`` unsinnig.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Bayro97
User
Beiträge: 6
Registriert: Dienstag 21. Mai 2019, 12:53

Ja, da hast du Recht. Es war am Ende leichter als erwartet. Ich war schon vor deiner Antwort fertig. Ich werde wahrscheinlich auch diesen beitrag hier loschen.
Antworten