= '01-daten/TC01.csv'
dateiname = np.loadtxt(dateiname) daten
7 Lesen und Schreiben von Dateien
Das Modul numpy stellt Funktionen zum Lesen und Schreiben von strukturierten Textdateien bereit.
7.1 Lesen von Dateien
Zum Lesen von strukturierten Textdateien, z.B. im CSV-Format (comma separated values), kann die np.loadtxt()
-Funktion verwendet werden. Diese bekommt als Argumente den einzulesenden Dateinamen und weitere Optionen zur Definition der Struktur der Daten. Der Rückgabewert ist ein (mehrdimensionales) Array.
Im folgenden Beispiel wird die Datei TC01.csv eingelesen und deren Inhalt graphisch dargestellt. Die erste Zeile der Datei wird dabei ignoriert, da sie als Kommentar – eingeleitet durch das #-Zeichen – interpretiert wird.
print("Daten:", daten)
print("Form:", daten.shape)
Daten: [20.1 20.1 20.1 ... 24.3 24.2 24.2]
Form: (1513,)
plt.plot(daten)'Datenindex')
plt.xlabel('Temperatur in °C'); plt.ylabel(
Standardmäßig erwartet die np.loadtxt()
-Funktion Komma separierte Werte. Werden die Daten durch ein anderes Trennzeichen getrennt, kann mit der Option delimiter = ""
ein anderes Trenzeichen ausgewählt werden. Beispielsweise würde der Funktionsaufruf bei einem Semikolon folgendermaßen aussehen: np.loadtxt(data.txt, delimiter = ";")
Beginnt die Datei mit den Daten mit Zeilen bezüglich zusätzlichen Informationen wie Einheiten oder Experimentdaten, können diese mit der Option skiprows= #Reihen
übersprungen werden.
7.2 Schreiben von Dateien
Zum Schreiben von Arrays in Dateien, kann die in numpy verfügbare Funktion np.savetxt()
verwendet werden. Dieser müssen mindestens die zu schreibenden Arrays als auch ein Dateiname übergeben werden. Darüber hinaus sind zahlreiche Formatierungs- bzw. Strukturierungsoptionen möglich.
Folgendes Beispiel skaliert die oben eingelesenen Daten und schreib jeden zehnten Wert in eine Datei. Dabei wird auch ein Kommentar (header
-Argument) am Anfang der Datei erzeugt. Das Ausgabeformat der Zahlen kann mit dem fmt
-Argument angegeben werden. Das Format ähnelt der Darstellungsweise, welche bei den formatierten Zeichenketten vorgestellt wurde.
= np.max(daten) - np.min(daten)
wertebereich = ( daten - np.min(daten) ) / wertebereich
daten_skaliert = daten_skaliert[::10] daten_skaliert
plt.plot(daten_skaliert)'Datenindex')
plt.xlabel('Skalierte Temperatur'); plt.ylabel(
Beim Schreiben der Datei wird ein mehrzeiliger Kommentar mithilfe des Zeilenumbruchzeichens \n
definiert. Die Ausgabe der Gleitkommazahlen wird mit %5.2f
formatiert, was 5 Stellen insgesamt und zwei Nachkommastellen entspricht.
# Zuweisung ist auf mehrere Zeilen aufgeteilt, aufgrund der
# schmalen Darstellung im Skript
= f'Daten aus {dateiname} skaliert auf den Bereich ' + \
kommentar '0 bis 1 \noriginales Min / Max:' + \
f'{np.min(daten)}/{np.max(daten)}'
= '01-daten/TC01_skaliert.csv'
neu_dateiname
np.savetxt(neu_dateiname, daten_skaliert, =kommentar, fmt='%5.2f') header
Zum Veranschaulichen werden die ersten Zeilen der neuen Datei ausgegeben.
# Einlesen der ersten Zeilen der neu erstellten Datei
= open(neu_dateiname, 'r')
datei for i in range(10):
print( datei.readline() , end='')
datei.close()
# Daten aus 01-daten/TC01.csv skaliert auf den Bereich 0 bis 1
# originales Min / Max:20.1/31.1
0.00
0.00
0.00
0.01
0.01
0.01
0.01
0.01