首页 文章

具有快速访问的稀疏矩阵

提问于
浏览
1

在使用大型SciPy CSR稀疏矩阵时,我注意到切割矩阵从矩阵中获取单行非常慢,因为它似乎可以复制 .

有没有办法制作一个稀疏矩阵,它接受现有行的引用而不是复制它,也许有一个比CSR矩阵更合适的实现?

我的实现需要的是快速查找元素和行以及快速查找向量的所有非零索引 . 我永远不需要以任何方式更改矩阵或对矩阵执行其他操作 .

2 回答

  • 0

    您可以利用CSR表示直接对基础数组进行切片,并使用新的CSR矩阵共享数据:

    mat = # some CSR matrix
    i = # the index of whatever row you want
    start, stop = mat.indptr[i], mat.indptr[i+1]
    noncopy_row_i = scipy.sparse.csr_matrix((mat.data[start:stop],
                                             mat.indices[start:stop],
                                             numpy.array([0, stop-start])),
                                            shape=(1, mat.shape[1]))
    
  • 0

    Numpy支持不同类型的os sparces矩阵:https://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information

    可能 coo_matrix 会给出更快的元素查找,但你也可以放松一些其他的操作 . 我认为最好的方法是对您的数据和算法进行基准测试 .

相关问题