簡體   English   中英

快速訪問的稀疏矩陣

[英]Sparse matrix with fast access

在處理大型SciPy CSR稀疏矩陣時,我注意到將矩陣切片以從矩陣中獲取單行非常慢,因為它似乎可以進行復制。

有什么方法可以使稀疏矩陣引用現有行而不是復制現有行,也許有比CSR矩陣更合適的實現?

我需要的實現是快速查找元素和行以及快速查找向量的所有非零索引。 我從不需要以任何方式更改矩陣或對矩陣執行其他操作。

您可以利用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]))

Numpy支持不同類型的OS稀疏矩陣: https ://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information

可能是coo_matrix將提供更快的元素查找,但是您也可以松開其他一些操作。 我認為最好的方法是對您的數據和算法進行基准測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM