2013-04-25 3 views
13

아무도 h5py에서 hdf5 데이터 세트를 업데이트 할 생각이 있습니까? 우리가 같은 데이터 집합 생성 가정 :h5py 데이터 세트 업데이트

import h5py 
import numpy 
f = h5py.File('myfile.hdf5') 
dset = f.create_dataset('mydataset', data=numpy.ones((2,2),"=i4")) 
new_dset_value=numpy.zeros((3,3),"=i4") 

그것은 3 × 3 NumPy와 배열에 DSET을 확장하는 것이 가능을?

답변

14

"확장 가능"속성을 사용하여 데이터 집합을 만들어야합니다. 데이터 세트를 처음 생성 한 후에는이를 변경할 수 없습니다. 이렇게하려면 you need to use the "maxshape" keyword.는 크기가 무제한 일 수 있음을 의미합니다.

dset = f.create_dataset('mydataset', (2,2), maxshape=(None,3)) 

번째 따라 제 3 치수를 따라 무기한으로 연장 될 수 크기의 세트 (2,2)을 생성한다 : 따라서, 만약 f는 HDF5 파일이다. 지금, 당신은 resize와 데이터 집합을 확장 할 수

dset.resize((3,3)) 
dset[:,:] = np.zeros((3,3),"=i4") 

첫 번째 차원은 훨씬 증가 할 수 있습니다 당신이 원하는대로 : 당신은 단지 새 크기를 지정해야하므로

dset.resize((10,3)) 
+5

크기 조정도 축 인수를 받아 dset.resize (10, axis = 0) – velotron

+0

매우 유용한 @velotron입니다. 다차원 배열의 경우 더 쉽게 사용할 수 있기 때문에 허용 된 답변에 추가 할 수 있습니다. – gcucurull

+0

이 예제는 이전에 파일에 있던 내용을 덮어 씁니까? 아니면 그냥 새로운 내용을 추가합니까? – user798719

관련 문제