有效地将大量 SciPy 稀疏矩阵条目设置为零

efficiently set a large number of SciPy sparse matrix entries to zero

我需要从 SciPy 稀疏矩阵中删除大量条目。 目前我将矩阵转换为 DOK 格式并单独分配 每次进入0.

m = m.todok()
for i, j in pruneme:
  m[i,j] = 0

这非常慢。

有没有更快的方法?

您可以有效地设置 CSR 稀疏数组的元素,只要您不添加新的非零值,只需在数组下标元组即可:

i, j = zip(*pruneme) # assuming that pruneme is a python list
m[i, j] = 0.
m.eliminate_zeros()

这应该比构造两个数组快得多。