2014-04-10 64 views
8

如何使用h5py Python庫調整HDF5陣列的尺寸?如何使用`h5py`調整HDF5陣列的尺寸

我試過使用.resize方法和chunks設置爲True的陣列。唉,我仍然錯過了一些東西。

In [1]: import h5py 

In [2]: f = h5py.File('foo.hdf5', 'w') 

In [3]: d = f.create_dataset('data', (3, 3), dtype='i8', chunks=True) 

In [4]: d.resize((6, 3)) 
/home/mrocklin/Software/anaconda/lib/python2.7/site-packages/h5py/_hl/dataset.pyc in resize(self, size, axis) 
--> 277   self.id.set_extent(size) 
ValueError: unable to set extend dataset (Dataset: Unable to initialize object) 

In [11]: h5py.__version__ 
Out[11]: '2.2.1' 
+0

也許這是與數組的數據類型有關...也許嘗試一個更標準的數據類型,如初始化數組文件中顯示的數據類型? –

+0

剛試過沒有指定dtype(我認爲它默認爲浮動)。同樣的錯誤 – MRocklin

+1

你是否在'create_dataset'上缺少'maxshape'? – SlightlyCuban

回答

5

正如奧倫提到的,你需要,如果你想以後更改數組的大小創建dataset時使用maxshape。尺寸設置爲None,您可以調整其大小尺寸高達後來2 ** 64(H5的限制):

In [1]: import h5py 

In [2]: f = h5py.File('foo.hdf5', 'w') 

In [3]: d = f.create_dataset('data', (3, 3), maxshape=(None, 3), dtype='i8', chunks=True) 

In [4]: d.resize((6, 3)) 

In [5]: h5py.__version__ 
Out[5]: '2.2.1' 

docs更多。