2013-04-17 1 views
2

.mat 파일의 데이터를 파이썬으로로드하려고 시도하므로 HDF5 파일에 저장할 수 있습니다.Python dtype ('object')을 HDF5 파일에 저장하는 방법은 무엇입니까?

문제는 scipy.io.loadmat 반환 DTYPE = 배열이 포함 된 사전이다 ('카운트', '| 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 

해결 방법이 있습니까?

답변

5

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)