我正在尝试做非常大的2个dask阵列X(35000 x 7500)和Y(7500 x 10)的点积。由于点积也非常大,我将它存储在hdf5
中f = h5py.File('output.hdf5')
f['output'] = X.dot(Y)
但即使它差不多1小时,第二个命令也没有给出任何输出。怎么了?技术更快吗?是否存在" chunks"在创建X和Y时?
答案 0 :(得分:1)
考虑.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数组时,您正在使用的功能。