使用 python h5py 读取 .mat 文件中的所有变量

Reading ALL variables in a .mat file with python h5py

我正在尝试从“.mat”v7.3 文件中提取所有变量,并将它们转换为 NumPy 数组。有没有一种方法可以通用地执行此操作,最好不需要指定变量名?如何从 h5py.File 中获取所有存在的变量名,然后检查它们的维度?

例如。

 import numpy as np, h5py

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

在看到一些评论和 H5PY Groups 的文档后,我发现您可以遍历所有 H5PY "Items" 以获取与每个变量名称关联的值。我在下面举了一个例子。如果他们是获取变量名称和值的更好方法,请 post。

注意:该示例仅提取包含数值数组 (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