【问题标题】:Sparse Matrix Addition稀疏矩阵加法
【发布时间】:2012-07-06 14:44:59
【问题描述】:

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

最好的问候

【问题讨论】:

  • 你的问题缺乏细节,所以在我的回答中我不得不做出假设。我建议编辑您的问题以添加演示您的问题的代码。这可能会为您提供更好的答案。

标签: python scipy


【解决方案1】:

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

>>> 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

【讨论】:

    【解决方案2】:

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

    petsc4py

    petsc

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

    【讨论】:

    • 这如何回答这个问题?
    • @talonmies 值得一试,如果他想使用标准软件来解决 scipy 不付出大量努力就永远无法解决的科学问题,我应该把它作为一个评论,而不是一个问题,抱歉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2018-01-19
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多