Matlab 7.3文件格式使用h5py并非十分容易。它依赖于HDF5参考,参见。h5py参考文献文档。
>>> import h5py
>>> f = h5py.File('test.mat')
>>> list(f.keys())
['#refs#', 'struArray']
>>> struArray = f['struArray']
>>> struArray['name'][0, 0] # this is the HDF5 reference
<HDF5 object reference>
>>> f[struArray['name'][0, 0]].value # this is the actual data
array([[111],
[110],
[101]], dtype=uint16)
阅读struArray(i).id
:
>>> f[struArray['id'][0, 0]][0, 0]
1.0
>>> f[struArray['id'][1, 0]][0, 0]
2.0
>>> f[struArray['id'][2, 0]][0, 0]
3.0
请注意,Matlab将数字存储为大小为(1,1)的数组,因此最终存储[0, 0]
了该数字。
阅读struArray(i).data
:
>>> f[struArray['data'][0, 0]].value
array([[ 1.],
[ 2.],
[ 3.],
[ 4.],
[ 5.],
[ 6.],
[ 7.],
[ 8.],
[ 9.],
[ 10.]])
要读取struArray(i).name
,必须将整数数组转换为字符串:
>>> f[struArray['name'][0, 0]].value.tobytes()[::2].decode()
'one'
>>> f[struArray['name'][1, 0]].value.tobytes()[::2].decode()
'two'
>>> f[struArray['name'][2, 0]].value.tobytes()[::2].decode()
'three'