2015-04-24 197 views
2

我试图从'.mat'v7.3文件中提取所有变量,并将它们转换为NumPy数组。有没有办法做到这一般,最好不需要指定变量名称?如何从h5py.File获取所有当前变量名称,然后检查它们的维度?使用python h5py读取.mat文件中的所有变量

Ex。

import numpy as np, h5py 

file = h5py.File('data.mat','r') 
for "all variables in mat file" 
    ...fill numpy array 
end 
+1

您是否在交互式会话中探索过此文件? 'h5py'是自我记录,允许你找到组和数据集的'键',并迭代它。换句话说,首先,像处理其他未知的'h5'文件一样对待文件。通过h5py上阅读7.3版 – hpaulj

+0

以前的问题 http://stackoverflow.com/questions/27670149/read-matlab-v7-3-file-into-python-list-of-numpy-arrays-via- h5py http://stackoverflow.com/questions/19310808/how-to-read-a-v7-3-mat-file-via-h5py/27699851#27699851 – hpaulj

回答

5

看到一些评论,以及对单证后H5PY Groups,我发现,您可以通过所有的H5PY“项目”的迭代,以获得与每个变量名的值。我在下面举了一个例子。如果它们是获取变量名称和值的更好方法,请发布。

注意:该示例仅抽取包含数值数组(h5py.Dataset)的变量的值。如果您有嵌套的组或单元阵列,则需要进一步访问它们以获取值。

import numpy as np 
import h5py 

f = h5py.File('simdata_020_01.mat','r') 
variables = f.items() 

for var in variables: 
    name = var[0] 
    data = var[1] 
    print "Name ", name # Name 
    if type(data) is h5py.Dataset: 
     # If DataSet pull the associated Data 
     # If not a dataset, you may need to access the element sub-items 
     value = data.value 
     print "Value", value # NumPy Array/Value 
+1

你可以只为'name,data在f.items()中:'而不是整个'变量'和'var [0]'的东西。 – LucasB

相关问题