我正在尝试做非常大的 2 个 dask 数组 X(35000 x 7500)和 Y(7500 x 10)的点积。由于点积也将非常大,我将其存储在 hdf5
f = h5py.File('output.hdf5')
f['output'] = X.dot(Y)
但是第二个命令即使将近 1 个小时也没有给出任何输出。怎么了?有更快的技术吗?创建 X 和 Y 时是否存在“块”问题?
考虑.to_hdf5
方法或da.store
功能。
>>> X.dot(Y).to_hdf5('output.hdf5', 'output')
或者
>>> output = f.create_dataset('/output', X.dot(Y).shape, X.dot(Y).dtype)
>>> da.store(X.dot(Y), output)
该to_hdf5
方法对您来说可能更容易。该da.store
方法也适用于其他格式。
H5Py 中的__setitem__
函数(您所说f['output'] = ...
的内容被硬编码为使用 NumPy 数组。