HDF5 data set, unable to read contents

Peter Otten __peter__ at web.de
Fri Mar 11 06:12:39 EST 2016


varun7rs at gmail.com wrote:

> Hello everyone,
> 
> I recently came across a package called matrix2latex which simplifies the
> creation of very large tables. So, I saved my data in .mat format using
> the '-v7.3' extension so that they can be read by python.
> 
> Now, when I try to read these files, I'm having some problems in
> reproducing the whole matrix. Whenever I try and print out an element of
> the array, I only get 'HDF5 object reference' as the output. This is
> basically the short code I wrote and what I basically want to do is have
> the values of the elements in the arrays and not the 'HDF5 object
> reference' thing. ex [ [ 1 2 3 4 ], [2 3 4 5 ]...]
> 
> Could you please help me with this? The link to the .mat file is as below
> 
> https://drive.google.com/file/d/0B2-j91i19ey2Nm1CbVpCQVdZc3M/view?usp=sharing
> 
> 
> import numpy as np, h5py
> from matrix2latex import matrix2latex
> 
> f = h5py.File('nominal_case_unfix.mat', 'r')
> data = f.get('nominal_case_unfix')

Did you mean _fix instead of _unfix?

> np_data = np.array(data)
> print np_data

Maybe it has something to do with the way you saved your data? When I save 
and load a matrix I don't see those object references:

$ cat h5write.py
import numpy as np
import h5py

a = np.array([[1,2,3], [4,5,6]])

f = h5py.File('save.mat', 'w')
d = f.create_dataset("foo", data=a)
f.close()
$ python h5write.py
$ cat h5read.py
import sys
import numpy as np
import h5py

filename, matrixlocation = sys.argv[1:]

f = h5py.File(filename, 'r')
d = f.get(matrixlocation)
print np.array(d)
$ python h5read.py save.mat foo
[[1 2 3]
 [4 5 6]]

However, with your data set:

$ python h5read.py nominal_case_fix.mat nominal_case_fix
[[<HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
[...]
  <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>]]
$





More information about the Python-list mailing list