loadmat#
- scipy.io.loadmat(file_name, mdict=None, appendmat=True, *, spmatrix=True, **kwargs)[Quelle]#
MATLAB-Datei laden.
- Parameter:
- file_namestr
Name der Mat-Datei (die .mat-Erweiterung wird nicht benötigt, wenn appendmat==True ist). Kann auch ein geöffnetes dateiähnliches Objekt übergeben.
- mdictdict, optional
Dictionary, in das die matfile-Variablen eingefügt werden sollen.
- appendmatbool, optional
True, um die Endung .mat an den gegebenen Dateinamen anzuhängen, falls sie noch nicht vorhanden ist. Standard ist True.
- spmatrixbool, optional (Standard: True)
Wenn
True, wird eine sparsecoo_matrixzurückgegeben. Andernfalls wirdcoo_arrayzurückgegeben. Nur relevant für sparse Variablen.- byte_orderstr oder None, optional
Standardmäßig None, was bedeutet, dass die Byte-Reihenfolge aus der Mat-Datei erraten wird. Andernfalls kann es eine der folgenden Optionen sein: (‘native’, ‘=’, ‘little’, ‘<’, ‘BIG’, ‘>’).
- mat_dtypebool, optional
Wenn True, werden Arrays im gleichen dtype zurückgegeben, wie sie in MATLAB geladen würden (anstelle des dtypes, mit dem sie gespeichert wurden).
- squeeze_mebool, optional
Gibt an, ob Einheitsdimensionen verkleinert werden sollen oder nicht.
- chars_as_stringsbool, optional
Gibt an, ob Zeichen-Arrays in String-Arrays konvertiert werden sollen.
- matlab_compatiblebool, optional
Gibt Matrizen zurück, wie sie von MATLAB geladen würden (impliziert squeeze_me=False, chars_as_strings=False, mat_dtype=True, struct_as_record=True).
- struct_as_recordbool, optional
Ob MATLAB-Strukturen als NumPy-Record-Arrays oder als NumPy-Arrays im alten Stil mit dtype=object geladen werden sollen. Das Setzen dieses Flags auf False repliziert das Verhalten von SciPy-Version 0.7.x (Rückgabe von NumPy-Objekt-Arrays). Die Standardeinstellung ist True, da sie eine einfachere Round-Trip-Ladung und -Speicherung von MATLAB-Dateien ermöglicht.
- verify_compressed_data_integritybool, optional
Ob die Länge von komprimierten Sequenzen in der MATLAB-Datei überprüft werden soll, um sicherzustellen, dass sie nicht länger sind als erwartet. Es ist ratsam, dies zu aktivieren (Standardeinstellung), da überlange komprimierte Sequenzen in MATLAB-Dateien im Allgemeinen darauf hindeuten, dass die Dateien eine Art Beschädigung erfahren haben.
- variable_namesNone oder Sequenz
Wenn None (Standard) – liest alle Variablen in der Datei. Andernfalls sollte variable_names eine Sequenz von Strings sein, die die Namen der MATLAB-Variablen angeben, die aus der Datei gelesen werden sollen. Der Leser überspringt jede Variable, deren Name nicht in dieser Sequenz enthalten ist, was möglicherweise einige Leseoperationen einspart.
- simplify_cellsFalse, optional
Wenn True, wird eine vereinfachte Dictionary-Struktur zurückgegeben (was nützlich ist, wenn die Mat-Datei Cell-Arrays enthält). Beachten Sie, dass dies nur die Struktur des Ergebnisses beeinflusst und nicht dessen Inhalt (der für beide Ausgabestrukturen identisch ist). Wenn True, werden automatisch struct_as_record auf False und squeeze_me auf True gesetzt, was zur Vereinfachung von Zellen erforderlich ist.
- uint16_codecstr, optional
Der Codec, der zum Dekodieren von Zeichen verwendet werden soll, die als uint16-Werte gespeichert sind. Die Standardeinstellung verwendet die Systemkodierung, dies kann jedoch manuell auf andere Werte wie 'ascii', 'latin1' und 'utf-8' gesetzt werden. Dieser Parameter ist nur für Dateien relevant, die als v6 und höher gespeichert sind, und nicht für Dateien, die als v4 gespeichert sind.
- Rückgabe:
- mat_dictdict
Dictionary mit Variablennamen als Schlüssel und geladenen Matrizen als Werte.
Hinweise
Mat-Dateien der Versionen v4 (Level 1.0), v6 und v7 bis 7.2 werden unterstützt.
Sie benötigen eine HDF5-Python-Bibliothek, um MATLAB 7.3 Format Mat-Dateien zu lesen. Da SciPy keine bereitstellt, implementieren wir hier nicht die HDF5 / 7.3-Schnittstelle.
Beispiele
>>> from os.path import dirname, join as pjoin >>> import scipy.io as sio
Rufen Sie den Dateinamen für eine Beispiel- .mat-Datei aus dem Verzeichnis tests/data ab.
>>> data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data') >>> mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat')
Laden Sie den Inhalt der .mat-Datei.
>>> mat_contents = sio.loadmat(mat_fname, spmatrix=False)
Das Ergebnis ist ein Dictionary, ein Schlüssel/Wert-Paar für jede Variable
>>> sorted(mat_contents.keys()) ['__globals__', '__header__', '__version__', 'testdouble'] >>> mat_contents['testdouble'] array([[0. , 0.78539816, 1.57079633, 2.35619449, 3.14159265, 3.92699082, 4.71238898, 5.49778714, 6.28318531]])
Standardmäßig liest SciPy MATLAB-Strukturen als strukturierte NumPy-Arrays, bei denen die Dtype-Felder vom Typ object sind und die Namen den Feldnamen der MATLAB-Struktur entsprechen. Dies kann durch Setzen des optionalen Arguments struct_as_record=False deaktiviert werden.
Rufen Sie den Dateinamen für eine Beispiel- .mat-Datei ab, die eine MATLAB-Struktur namens teststruct enthält, und laden Sie den Inhalt.
>>> matstruct_fname = pjoin(data_dir, 'teststruct_7.4_GLNX86.mat') >>> matstruct_contents = sio.loadmat(matstruct_fname) >>> teststruct = matstruct_contents['teststruct'] >>> teststruct.dtype dtype([('stringfield', 'O'), ('doublefield', 'O'), ('complexfield', 'O')])
Die Größe des strukturierten Arrays ist die Größe der MATLAB-Struktur, nicht die Anzahl der Elemente in einem bestimmten Feld. Die Form ist standardmäßig 2-dimensional, es sei denn, das optionale Argument squeeze_me=True wird verwendet, in welchem Fall alle Dimensionen der Länge 1 entfernt werden.
>>> teststruct.size 1 >>> teststruct.shape (1, 1)
Rufen Sie das 'stringfield' des ersten Elements in der MATLAB-Struktur ab.
>>> teststruct[0, 0]['stringfield'] array(['Rats live on no evil star.'], dtype='<U26')
Rufen Sie das erste Element des 'doublefield' ab.
>>> teststruct['doublefield'][0, 0] array([[ 1.41421356, 2.71828183, 3.14159265]])
Laden Sie die MATLAB-Struktur, entfernen Sie Dimensionen der Länge 1 und rufen Sie das Element aus dem 'complexfield' ab.
>>> matstruct_squeezed = sio.loadmat(matstruct_fname, squeeze_me=True) >>> matstruct_squeezed['teststruct'].shape () >>> matstruct_squeezed['teststruct']['complexfield'].shape () >>> matstruct_squeezed['teststruct']['complexfield'].item() array([ 1.41421356+1.41421356j, 2.71828183+2.71828183j, 3.14159265+3.14159265j])