Dateieingabe und -ausgabe mit Arrays#

NumPy ist in der Lage, Daten in einigen Text- oder Binärformaten auf der Festplatte zu speichern und von dort zu laden. In diesem Abschnitt gehe ich jedoch nur auf das NumPy-eigene Binärformat ein, da meist pandas oder andere Werkzeuge zum Laden von Text- oder Tabellendaten verwendet werden (siehe Daten lesen, speichern und bereitstellen).

np.save und np.load sind die beiden wichtigsten Funktionen zum effizienten Speichern und Laden von Array-Daten auf der Festplatte. Arrays werden standardmäßig in einem unkomprimierten Rohbinärformat mit der Dateierweiterung .npy gespeichert:

[1]:
import numpy as np


data = np.random.randn(7, 3)

np.save("my_data", data)

Wenn der Dateipfad nicht bereits auf .npy endet, wird die Erweiterung angehängt. Das Array auf der Festplatte kann dann mit np.load geladen werden:

[2]:
np.load("my_data.npy")
[2]:
array([[-1.84346172, -0.53302864,  1.37131024],
       [ 0.23457529,  1.27414327,  1.77885434],
       [ 0.52351246, -1.79912077, -0.55748198],
       [ 0.24762959, -0.90100598,  0.18478303],
       [-0.73525977, -1.63940599, -1.60407133],
       [-0.62536449, -0.03524507, -0.82175049],
       [-0.46539262, -0.26317502,  0.74846956]])

Ihr könnt mehrere Arrays in einem unkomprimierten Archiv speichern indem ihr np.savez verwendet und die Arrays als Schlüsselwortargumente übergebt:

[3]:
np.savez("data_archive.npz", a=data, b=np.square(data))
[4]:
archive = np.load("data_archive.npz")

archive["b"]
[4]:
array([[3.39835111e+00, 2.84119531e-01, 1.88049177e+00],
       [5.50255688e-02, 1.62344108e+00, 3.16432278e+00],
       [2.74065298e-01, 3.23683556e+00, 3.10786156e-01],
       [6.13204151e-02, 8.11811769e-01, 3.41447698e-02],
       [5.40606923e-01, 2.68765198e+00, 2.57304483e+00],
       [3.91080744e-01, 1.24221481e-03, 6.75273860e-01],
       [2.16590291e-01, 6.92610896e-02, 5.60206683e-01]])