小分けにして保存したデータをh5pyで一つにまとめる

小分けして保存したデータをひとまとめにしてhdf5ファイルに保存したい。クラスタのマスターノードはメモリ搭載量が小さいが、計算実行ノードではデータ全体がメモリに入る。小分けしたデータをnumpy arrayに一度に入れてしまうとマスターノードのメモリが足りない。小分けしたデータを逐次的にhdf5ファイルに書き込むことで問題を解決した。

with h5py.File("large_data.hdf5", 'w') as w:
    large_data = w.create_dataset('values', values_shape, dtype=dtype)
    idx = 0
    for fname, npts in zip(filenames, num_points):
        large_data[idx:(idx + npts)] = read_piece_data(fname)
        idx += npts