У меня есть dask.array
, охватывающий несколько файлов hdf5. По сути, я хотел бы нарезать набор данных и сохранить полученный срез в hdf5. То, что я пробовал до сих пор, в основном это:
In [1]: import dask.array as da
In [3]: import numpy as np
In [5]: xs = da.from_array(np.linspace(0, 10), chunks=10) # could be from hdf5 files
In [7]: import h5py
In [8]: h5f = h5py.File('/tmp/paul/foo.h5')
In [9]: h5f.create_dataset(name='ham', data=xs)
Out[9]: <HDF5 dataset "ham": shape (50,), type "<f8">
Это прекрасно работает. Однако, когда я da.concatenate
несколько h5py
наборов данных, функция create_dataset
, кажется, зависает (тупик потока?). Обратите внимание, что xs
может представлять собой набор данных (приблизительный) 10 ГБ, охватывающий 10 файлов по 1 ГБ каждый.
Какой разумный способ записать xs
в набор данных h5py
, не прибегая к da.compute
и рискуя MemoryError
?