0

我正在使用在 scipy 中实现的稀疏矩阵格式作为 csr_matrix。我有一个 mat 变量,它是 csr_matrix 格式的,它的所有元素都是非负的。但是,当我使用 mat + mat 操作时,非零元素数会减少,这对我来说很奇怪。想要的是逐元素加法,但为什么非元素数量会随着每个元素都是非负数而减少。

此致

4

2 回答 2

1

SciPy 中的nnz成员csr_matrix计算显式零,因此根据您创建矩阵的方式,这可以解释您所观察到的内容。您可以通过在矩阵中显式设置零来查看此行为。

>>> from scipy.sparse import csr_matrix
>>> A = csr_matrix((5, 5))
>>> A.nnz
0
>>> A[0, 0] = 0
>>> A.nnz
1
>>> A[1,1] = 0
>>> A.nnz
2

现在,当您执行创建新矩阵的操作(例如矩阵加法)时,不会保留显式零。

>>> B = A + A
>>> B.nnz
0
于 2012-07-06T06:01:21.373 回答
0

虽然它可能有点过度杀戮并且不相关,但可能值得研究这两个库

petsc4py

宠物

几乎可以解决您能想到的任何稀疏矩阵问题

于 2012-07-06T06:44:59.210 回答