我有一個矩陣A在CSC-格式,這是我索引只是一個單一的柱SciPy的:稀疏矩陣來ndarray
b = A[:,col]
導致(N×1)矩陣的。我想要做的是:
v = M * b
其中M是CSR中的(n×n)矩陣。結果v是(n×1)CSR矩陣。我需要迭代v中的值(實際上不包括0)並檢索滿足特定條件的元素的索引(注意:稀疏矩陣格式未被選擇以適合該特定操作,但是一般矩陣x矩陣產品應該是最快與CSR * CSC,對不對?)
問題是,迭代在CSR格式化向量(0 <我< n:v [i,0])的條目是非常慢,我真的浪費相當一些記憶因爲v不再稀疏了。
任何人都可以告訴我如何執行這些操作,我可以快速迭代結果向量,保持複製相關的內存開銷很小?
IN: M (CSR-Matrix), A (CSC-Matrix), col_index
v = M * A[:,col_index]
for entries in v:
do stuff
是否有可能以某種方式加快CSC矩陣中列的「高級」索引?在代碼中的其他位置,我必須提取A的子矩陣(不能重新配置以允許切片,因此使用索引數組),其中包括所有列的給定子集。在線分析時,[:,idxlist]需要相當長的時間。
期待您的建議
謝謝。現在我最終把M變成了一個CSC矩陣。由於轉換(CSC * CSC矩陣mult而不是CSR * CSC),具有相當大的矩陣的基準測試並未真正顯示代碼的任何特定放緩。 但是,作爲一個很好的副作用,我立即得到了索引數組中的所有非零索引,就像你說的:) – limbonic