我想创建一个巨大的(> 100GB)dask 数组,然后用我计算的值填充它。然后我想将其保存为 hdf5 文件。我选择了这是我的代码:
import dask.array as da
size = 100000
chunks = 50000
file_path = "..."
# calculate entries
A = da.zeros(shape=(size, size), chunks=(chunks, chunks))
for i in range(size):
for j in range(size):
A[i,j] = compute_value(i,j)
# store in FS
f = h5py.File(file_path)
dset = f.create_dataset('/data', shape=A.shape, chunks=(chunks, chunks), dtype='f8')
da.store(A, dset)
我在分配 A[i,j] 处得到错误:
NotImplementedError: Item assignment with <class 'tuple'> not supported
请注意,此数组太大而无法放入 RAM中。因此它应该以某种方式将数组保存为全零,然后用计算值更新这个保存的矩阵。在 dask 中这样做的正确方法是什么?
谢谢你的帮助!