2

将一段 dask 数组复制到 nparray 时出错,行数不匹配

store = h5py.File(s_file_path + '.hdf5', 'r')
dset = store['data_matrix']
data_matrix = da.from_array(dset, chunks=dset.chunks)
test_set = data_matrix[482:, :]
np_test_set = np.array(test_set, order='FORTRAN')

print "source_set shape: ", data_matrix.shape
print "test_set shape: ", test_set.shape
print "np_test_set shape: ", np_test_set.shape

结果:

source_set shape:  (656, 473034)
test set shape:  (174, 473034)
np_test_set shape:  (195, 473034)

我对 dask 不是很熟悉,我使用它是因为我的数据没有保存在 RAM 中,行差异与缓存或块大小有关吗?

4

2 回答 2

3

转换为 numpy 数组的典型方法

.compute您可以通过调用方法将 dask.array 转换为 numpy 数组

np_test_set = test_set.compute()

或致电np.asarray

np_test_set = np.asarray(test_set)

Fortran 排序

原则上,您现在正在做的事情也应该可以正常工作,因此这可能是一个错误。唯一看起来不典型的部分是提前指定 Fortran 顺序。看看改变它是否会影响结果会很有趣。

附加信息

如果这是一个真正的错误(看起来可能是这样),那么最好提出一个问题。也可以查看chunksdask.array 的。

于 2015-12-24T19:40:35.043 回答
0

我将块更改为 (10, 500) ,现在它似乎可以工作了:

data_matrix = da.from_array(dset, chunks=(10,500))
于 2015-12-25T09:22:44.197 回答