NumPy IO

NumPy kann Textdaten oder Binärdaten auf der Festplatte lesen und schreiben.

NumPy führt ein einfaches Dateiformat für ndarray-Objekte ein:npy。

Die npy-Datei wird verwendet, um die Daten, die Form, den dtype und andere Informationen zu speichern, die zur Rekonstruktion des ndarray erforderlich sind.

Häufig verwendete E/A-Funktionen sind:

  • Die Funktionen load() und save() sind die beiden Hauptfunktionen zum Lesen und Schreiben von Array-Daten in Dateien. Standardmäßig werden Arrays in einem unkomprimierten rohen Binärformat in Dateien mit der Erweiterung .npy gespeichert.
  • Die Funktion savez() wird verwendet, um mehrere Arrays in eine Datei zu schreiben. Standardmäßig werden Arrays in einem unkomprimierten rohen Binärformat in Dateien mit der Erweiterung .npz gespeichert.
  • Die Funktionen loadtxt() und savetxt() verarbeiten normale Textdateien (wie .txt).

numpy.save()

Die Funktion numpy.save() speichert ein Array in einer Datei mit der Erweiterung .npy.

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

Parameter description:

  • filefile: Die zu speichernde Datei mit der Erweiterung .npy. Wenn der Dateipfad nicht mit der Erweiterung .npy endet, wird die Erweiterung automatisch hinzugefügt.
  • arrarr: Das zu speichernde Array.
  • allow_pickleallow_pickle: Optional, boolesch. Ermöglicht das Speichern von Objekt-Arrays mithilfe von Python-Pickles. Pickle in Python wird verwendet, um Objekte zu serialisieren und zu deserialisieren, bevor sie in eine Datei auf dem Datenträger gespeichert oder daraus gelesen werden.
  • fix_importsfix_imports: Optional, zur Vereinfachung beim Lesen von Daten, die von Python3 in Python2 gespeichert wurden.

Beispiel

import numpy as np a = np.array([1,2,3,4,5]) # In die Datei outfile.npy speichern np.save('outfile.npy',a) # In die Datei outfile2.npy speichern; wenn der Dateipfad nicht mit .npy endet, wird die Erweiterung automatisch hinzugefügt np.save('outfile2',a)

Wir können den Inhalt der Datei anzeigen:

$ cat outfile.npy 
?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,), }  
$ cat outfile2.npy 
?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,), } 

Es ist zu erkennen, dass die Datei unleserlich ist, da es sich um Daten im speziellen Binärformat von Numpy handelt.

Wir können die Funktion load() verwenden, um die Daten zu lesen, und sie werden normal angezeigt:

Beispiel

import numpy as np b = np.load('outfile.npy') print (b)

Die Ausgabe ist:

[1 2 3 4 5]

np.savez

Die Funktion numpy.savez() speichert mehrere Arrays in einer Datei mit der Erweiterung .npz.

numpy.savez(file, *args, **kwds)

Parameter description:

  • filefile: Die zu speichernde Datei, mit der Erweiterung.npz, wenn der Dateipfad nicht mit der Erweiterung.npzendet, wird die Erweiterung automatisch hinzugefügt.
  • argsargs: Die zu speichernden Arrays. Sie können Schlüsselwortargumente verwenden, um die Arrays zu benennen. Als Nicht-Schlüsselwortargumente übergebene Arrays werden automatisch benanntarr_0, arr_1, … 。
  • kwdskwds: Benennen Sie die zu speichernden Arrays mithilfe von Schlüsselwortargumenten.

Beispiel

import numpy as np a = np.array([[1,2,3],[4,5,6]]) b = np.arange(0, 1.0, 0.1) c = np.sin(b) # c verwendet den Schlüsselwortparameter sin_array np.savez("example.npz", a, b, sin_array = c) r = np.load("example.npz") print(r.files) # Namen der einzelnen Arrays anzeigen print(r["arr_0"]) # Array a print(r["arr_1"]) # Array b print(r["sin_array"]) # Array c

Die Ausgabe ist:

['sin_array', 'arr_0', 'arr_1']
[[1 2 3]
 [4 5 6]]
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
[0.         0.09983342 0.19866933 0.29552021 0.38941834 0.47942554
 0.56464247 0.64421769 0.71735609 0.78332691]

savetxt()

Die Funktion savetxt() speichert Daten in einem einfachen Textdateiformat, und die entsprechende Funktion loadtxt() wird verwendet, um die Daten abzurufen.

np.loadtxt(FILENAME, dtype=int, delimiter=' ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

Der Parameter delimiter kann verschiedene Trennzeichen, Konverterfunktionen für bestimmte Spalten, die Anzahl der zu überspringenden Zeilen und so weiter angeben.

Beispiel

import numpy as np a = np.array([1,2,3,4,5]) np.savetxt('out.txt',a) b = np.loadtxt('out.txt') print(b)

Die Ausgabe ist:

[1. 2. 3. 4. 5.]

Verwenden des delimiter-Parameters:

Beispiel

import numpy as np a=np.arange(0,10,0.5).reshape(4,-1) np.savetxt("out.txt",a,fmt="%d",delimiter=",") # Ändern, um als Ganzzahlen, kommagetrennt zu speichern b = np.loadtxt("out.txt",delimiter=",") # Beim Laden auch Kommatrennung angeben print(b)

Die Ausgabe ist:

[[0. 0. 1. 1. 2.]
 [2. 3. 3. 4. 4.]
 [5. 5. 6. 6. 7.]
 [7. 8. 8. 9. 9.]]
Andere Erweiterungen