创建由scipy.sparse.csr_矩阵支持的大型dask阵列

2024-10-03 06:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,称之为get_block(I, J),它接受两个索引集IJ,并返回一个scipy.sparse.csr_matrix,其中的条目取自更大的稀疏矩阵。例如,get_block(I, J) == S[I, :][:, J],除了S太大而无法放入内存之外

我想使用函数get_block组装dask.array版本的S,迭代对应于dask块的(I, J)对。我想创建一个S的核心外版本,尽管它超过了可用内存,但我仍然能够使用它进行计算。Dask被宣传为解决这个用例,所以我想我会尝试一下

我不清楚最好的方法是什么。我似乎能够做这样的事情:

block1 = da.from_array(get_block(I, J1))
block2 = da.from_array(get_block(I, J2))
blocked = da.block([block1, block2])

使用这种方法,我可以将所有(I, J)对和da.block结果循环在一起,但这并不是一个好方法

有没有一种惯用的方法可以做到这一点?达斯克是正确的选择吗


Tags: 方法函数from版本getscipyblockarray