scipy.io.

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 sparse coo_matrix zurückgegeben. Andernfalls wird coo_array zurü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])