2014-04-10 19 views
8

Làm cách nào để thay đổi kích thước mảng HDF5 bằng cách sử dụng thư viện Python h5py?Cách thay đổi kích thước một mảng HDF5 bằng `h5py`

Tôi đã thử sử dụng phương pháp .resize và trên một mảng có chunks được đặt thành True. Than ôi, tôi vẫn còn thiếu cái gì đó.

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

Có lẽ nó là một cái gì đó để làm với các kiểu dữ liệu của mảng ... Có thể thử một kiểu dữ liệu chuẩn hơn như một trong các tài liệu hướng dẫn để khởi tạo một mảng? –

+0

Chỉ cần thử nó không có dtype quy định (tôi nghĩ rằng nó mặc định nổi). Lỗi tương tự – MRocklin

+1

Bạn có thiếu 'maxshape' trên' create_dataset' không? – SlightlyCuban

Trả lời

5

Như đã đề cập bởi Oren, bạn cần phải sử dụng maxshape khi tạo dataset nếu bạn muốn thay đổi kích thước mảng sau. Thiết lập một chiều để None cho phép bạn thay đổi kích thước chiều mà lên đến 2 ** 64 (giới hạn h5 của) sau:

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' 

Xem docs để biết thêm.

Các vấn đề liên quan