In Octave
>> A = [1,2,3;4,5,6];
>> B = [1,2,3,4];
>> save -hdf5 abc.h5 A B
In IPython
In [138]: import h5py
In [139]: f = h5py.File('abc.h5')
In [140]: list(f.keys())
Out[140]: ['A', 'B']
In [141]: list(f['A'].keys())
Out[141]: ['type', 'value']
In [142]: f['A']['value']
Out[142]: <HDF5 dataset "value": shape (3, 2), type "<f8">
In [143]: A = f['A']['value'][:]
In [144]: A
Out[144]:
array([[ 1., 4.],
[ 2., 5.],
[ 3., 6.]])
Siehe auch Links in der Seitenleiste.
Im Grunde ist es eine Frage von dem gewünschten Datensatz zu finden, und es dann, wie beschrieben Laden in http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data
https://pypi.python.org/pypi/hdf5storage/0.1.14 - Dieses Paket hat MATLAB MAT v7.3 file support
. Ich habe es noch nicht benutzt.
In [550]: import hdf5storage
In [560]: bar = hdf5storage.read(filename='abc.h5')
In [561]: bar
Out[561]:
array([ ([(b'matrix', [[ 1., 4.], [ 2., 5.], [ 3., 6.]])], [(b'matrix', [[ 1.], [ 2.], [ 3.], [ 4.]])])],
dtype=[('A', [('type', 'S7'), ('value', '<f8', (3, 2))], (1,)), ('B', [('type', 'S7'), ('value', '<f8', (4, 1))], (1,))])
so dass die Datei wurde als strukturiertes Array geladen, mit Form (1,) und 2 Feldern, 'A' und 'B' (die 2 Variablennamen). Jeder hat seinerseits ein "type" - und ein "value" -Feld.
In [565]: bar['A']['value']
Out[565]:
array([[[[ 1., 4.],
[ 2., 5.],
[ 3., 6.]]]])
Oder mit seiner loadmat
:
In [570]: out = hdf5storage.loadmat('abc.h5',appendmat=False)
In [571]: out
Out[571]:
{'A': array([(b'matrix', [[ 1., 4.], [ 2., 5.], [ 3., 6.]])],
dtype=[('type', 'S7'), ('value', '<f8', (3, 2))]),
'B': array([(b'matrix', [[ 1.], [ 2.], [ 3.], [ 4.]])],
dtype=[('type', 'S7'), ('value', '<f8', (4, 1))])}
out
ist ein Wörterbuch:
In [572]: out['B']['value']
Out[572]:
array([[[ 1.],
[ 2.],
[ 3.],
[ 4.]]])
Für eine einfache MATLAB-Datei liest diese nicht viel hinzuzufügen. Es kann mehr mit Zellen oder Strukturen hinzufügen. Aber für das Schreiben einer MATLAB-kompatiblen Datei sollte es eine große Hilfe sein (obwohl zum Schreiben könnte man bei scipy.io.savemat
bleiben).
Wir haben dies in früheren SO-Fragen untersucht. Aber in der Zwischenzeit, erkunden Sie die Datenstruktur der Datei. Sehen Sie sich 'f.keys()' an (fügen Sie 'list (...)' in py3 hinzu). Möglicherweise müssen Sie mehrere Ebenen bearbeiten. Lesen Sie auch die Grundlagen der Verwendung von 'h5py'. – hpaulj
Von der Seitenleiste: https://stackoverflow.com/questions/19310808/how-to-read-a-v7-3-mat-file-via-h5py?rq=1 und https://stackoverflow.com/questions/27670149/read-matlab-v7-3-Datei-in-Python-Liste-von-Numpy-Arrays-via-h5py – hpaulj