【问题标题】:Python Sparse matrix access elementsPython 稀疏矩阵访问元素
【发布时间】:2021-12-30 21:18:09
【问题描述】:

我在 python 中有一个稀疏矩阵 A。我正在浏览我一个朋友的代码,他在他的代码中使用了A[:,i:i+1].toarray().flatten()。就我而言,该程序对他有用。但是,当我尝试使用它时,我得到:

from scipy import sparse

...

diagonals = [[2] * 3, [-1] * (3-1), [-1] * (3-1)]
offsets = [0, 1, -1]
B = sparse.diags(diagonals, offsets)
A = sparse.kronsum(B,B)

...
A[:,i:i+1].toarray().flatten()

例外:

    in __getitem__
        raise NotImplementedError
    NotImplementedError

我的问题,我需要实现什么或如何访问稀疏矩阵的元素。感谢您的帮助。

【问题讨论】:

    标签: python scipy sparse-matrix


    【解决方案1】:

    您很可能有一个bsr 格式矩阵,而您拥有的代码是使用旧版本的 scipy 实现的,并返回一个 csr 或 csc 矩阵。我不知道追踪这个的好方法。

    因此,如果我们在 scipy 1.7.2 上运行您的代码:

    type(A)
    scipy.sparse.bsr.bsr_matrix
    

    我们可以通过以下方式访问元素:

    A = sparse.kronsum(B,B,format = "csr")
    A[:,i:i+1].toarray().flatten()
    
    array([-1.,  4., -1.,  0., -1.,  0.,  0.,  0.,  0.])
    

    或者

    A = sparse.kronsum(B,B)
    A.tocsr()[:,i:i+1].toarray().flatten()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-13
      • 2023-03-25
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      相关资源
      最近更新 更多