scipy.io.matlab.

loadmat#

scipy.io.matlab.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

Wörterbuch, in das 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, geben Sie eine spärliche coo_matrix zurück. Andernfalls geben Sie coo_array zurück. Nur relevant für spärliche 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 alte NumPy-Arrays 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 einen einfacheren Round-Trip zum Laden und Speichern 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 als erwartet sind. Es ist ratsam, dies zu aktivieren (Standardeinstellung), da überlange komprimierte Sequenzen in MATLAB-Dateien im Allgemeinen darauf hinweisen, dass die Dateien eine Art von Beschädigung erfahren haben.

variable_namesNone oder Sequenz

Wenn None (Standard) - alle Variablen in der Datei lesen. Andernfalls sollte variable_names eine Sequenz von Strings sein, die die Namen der aus der Datei zu lesenden MATLAB-Variablen angibt. Der Leser wird jede Variable mit einem Namen, der nicht in dieser Sequenz enthalten ist, überspringen, was möglicherweise einige Lesevorgänge spart.

simplify_cellsFalse, optional

Wenn True, geben Sie eine vereinfachte Wörterbuchstruktur zurück (was nützlich ist, wenn die .mat-Datei Zell-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 struct_as_record automatisch auf False und squeeze_me auf True gesetzt, was zur Vereinfachung von Zellen erforderlich ist.

uint16_codecstr, optional

Der zu verwendende Codec zum Dekodieren von Zeichen, die als uint16-Werte gespeichert sind. Der Standard 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, nicht jedoch für Dateien, die als v4 gespeichert sind.

Rückgabe:
mat_dictdict

Wörterbuch mit Variablennamen als Schlüssel und geladenen Matrizen als Werten.

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 die HDF5 / 7.3-Schnittstelle hier nicht.

Beispiele

>>> from os.path import dirname, join as pjoin
>>> import scipy.io as sio

Holen Sie sich den Dateinamen für eine Beispiel .mat-Datei aus dem Verzeichnis tests/data.

>>> 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 Wörterbuch, 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 MATLAB-Strukturfeldnamen entsprechen. Dies kann durch Setzen des optionalen Arguments struct_as_record=False deaktiviert werden.

Holen Sie sich den Dateinamen für eine Beispiel .mat-Datei, die eine MATLAB-Struktur namens teststruct enthält, und laden Sie deren 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 2D, es sei denn, das optionale Argument squeeze_me=True wird verwendet, in diesem Fall werden alle Dimensionen der Länge 1 entfernt.

>>> teststruct.size
1
>>> teststruct.shape
(1, 1)

Holen Sie sich das 'stringfield' des ersten Elements in der MATLAB-Struktur.

>>> teststruct[0, 0]['stringfield']
array(['Rats live on no evil star.'],
  dtype='<U26')

Holen Sie sich das erste Element des 'doublefield'.

>>> teststruct['doublefield'][0, 0]
array([[ 1.41421356,  2.71828183,  3.14159265]])

Laden Sie die MATLAB-Struktur, entfernen Sie die Dimensionen der Länge 1 und holen Sie sich das Element aus dem 'complexfield'.

>>> 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])