Reading ALL variables in a .mat file with python h5py
After seeing some of the comments, and the documentations for H5PY Groups, I've found that you can iterate through all of the H5PY "Items" to get the value associated to each variable name. I gave an example below. Please post if their is a better way of grabbing the variable names and values.
Note: The example only pulls the value of variables that contain numeric arrays (h5py.Dataset). If you have nested Groups or cell arrays then you need to access them further to get the values.
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
CodyF
Software Engineer who dabbles mostly in data engineering and mobile development.
Updated on June 14, 2022Comments
-
CodyF almost 2 years
I'm trying to pull in all the variables from a '.mat' v7.3 file, and turn them into NumPy arrays. Is there a way to do this generically, preferably not needing to specify variable names? How can you get all present variable names from a h5py.File, then check their dimensions?
Ex.
import numpy as np, h5py file = h5py.File('data.mat','r') for "all variables in mat file" ...fill numpy array end
-
hpaulj about 9 yearsHave you explored this file in an interactive session?
h5py
is self documenting, allowing you to find thekeys
of groups and datasets, and iterating over the same. In other words, for a start, treat the file like you would any other unknownh5
file. -
hpaulj about 9 yearsPrevious questions on reading v7.3 via h5py stackoverflow.com/questions/27670149/… stackoverflow.com/questions/19310808/…
-
-
LucasB over 7 yearsYou can just do
for name, data in f.items():
instead of the wholevariables
andvar[0]
thing.