如何将Python数据类型(';对象';)保存在HDF5文件中?

如何将Python数据类型(';对象';)保存在HDF5文件中?,python,numpy,hdf5,Python,Numpy,Hdf5,我试图将.mat文件中的数据加载到python中,以便将其保存在HDF5文件中 问题是scipy.io.loadmat返回一个包含dtype=[('counts','O4')]数组的字典 每当我尝试使用返回的数组之一创建数据集时,都会出现以下错误: >> mat = scipy.io.loadmat('state-10.mat') >> h = h5py.File('test.hdf5','w') >> h.create_dataset('set', data

我试图将.mat文件中的数据加载到python中,以便将其保存在HDF5文件中

问题是
scipy.io.loadmat
返回一个包含dtype=[('counts','O4')]数组的字典

每当我尝试使用返回的数组之一创建数据集时,都会出现以下错误:

>> mat = scipy.io.loadmat('state-10.mat')
>> h = h5py.File('test.hdf5','w')
>> h.create_dataset('set', data=mat['ProteinComplex'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/h5py/_hl/group.py", line 69, in create_dataset
    dsid = dataset.make_new_dset(self, shape, dtype, data, **kwds)
  File "/usr/lib/python2.7/dist-packages/h5py/_hl/dataset.py", line 88, in make_new_dset
    tid = h5t.py_create(dtype, logical=1)
  File "h5t.pyx", line 1332, in h5py.h5t.py_create (h5py/h5t.c:11600)
  File "h5t.pyx", line 1373, in h5py.h5t.py_create (h5py/h5t.c:11209)
  File "h5t.pyx", line 1311, in h5py.h5t._c_compound (h5py/h5t.c:10695)
  File "h5t.pyx", line 1332, in h5py.h5t.py_create (h5py/h5t.c:11600)
  File "h5t.pyx", line 1402, in h5py.h5t.py_create (h5py/h5t.c:11465)
TypeError: Object dtype dtype('object') has no native HDF5 equivalent
>mat=scipy.io.loadmat('state-10.mat'))
>>h=h5py.File('test.hdf5','w')
>>h.create_数据集('set',data=mat['ProteinComplex']))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/dist packages/h5py/_hl/group.py”,第69行,在create_数据集中
dsid=dataset.make_new_dset(self,shape,dtype,data,**kwds)
文件“/usr/lib/python2.7/dist packages/h5py/_hl/dataset.py”,第88行,在make_new_dset中
tid=h5t.py_create(数据类型,逻辑=1)
h5py.h5t.py_create(h5py/h5t.c:11600)中的文件“h5t.pyx”,第1332行
文件“h5t.pyx”,第1373行,在h5py.h5t.py_创建(h5py/h5t.c:11209)中
文件“h5t.pyx”,第1311行,在h5py.h5t.__化合物中(h5py/h5t.c:10695)
h5py.h5t.py_create(h5py/h5t.c:11600)中的文件“h5t.pyx”,第1332行
文件“h5t.pyx”,第1402行,位于h5py.h5t.py_-create(h5py/h5t.c:11465)中
TypeError:对象dtype dtype('Object')没有本机HDF5等效项

有什么解决办法吗

事实证明,
mat['ProteinComplex']
的类型是一个scipy多维数组(ndarray)。可以使用
ndarray.tolist()
方法将这些列表转换为列表。如果我们将nd数组更改为一个列表,那么在使用H5Py创建数据集时它将起作用

>> mat = scipy.io.loadmat('state-10.mat')
>> h = h5py.File('test.hdf5','w')
>> protein_complex = mat['ProteinComplex'].tolist()
>> h.create_dataset('ProteinComplex', data=protein_complex)