2017-06-30 77 views
0

我最近一直在處理稀疏矩陣。我的目標是以某種方式將圖形的鄰接列表轉換爲CSR格式,這裏定義爲:http://devblogs.nvidia.com/parallelforall/wp-content/uploads/2014/07/CSR.pngScipy CSR稀疏矩陣實際上是COO?

我看到的一個可能的選擇是,我首先構建一個NumPy矩陣並使用scipy.sparse.csr_matrix進行轉換。問題是,SciPy中的CSR與鏈接中討論的CSR有所不同。我的問題是,這只是一個差異,我需要編寫自己的解析器,或者可以將SciPy轉換爲鏈接中定義的CSR。

更多的位有關的問題,讓我們說我有一個矩陣:

matrix([[1, 1, 0], 
     [0, 0, 1], 
     [1, 0, 1]]) 

這個CSR格式由兩個陣列,柱(C)和行(R)的。而且我也努力的模樣:

C: [0,1,2,0,2] 

R: [0,2,3,5] 

SciPy的返回:

(0, 0) 1 
    (0, 1) 1 
    (1, 2) 1 
    (2, 0) 1 
    (2, 2) 1 

其中第二列是一樣的我的C,然而,這是我的理解首席運營官格式,而不是企業社會責任。 (這是使用csr_matrix(adjacency_matrix)函數完成的)。

回答

1

內部存儲的內容與您通過print(A)(其中Acsr_matrix)僅打印矩陣時看到的內容有所不同。

documentation中列出了屬性。除其他有以下三個特性:矩陣的矩陣
指數CSR格式索引陣列的

數據CSR格式數據陣列
indptr矩陣的CSR格式索引指針數組

您可以通過A.dataA.indicesA.indptr訪問(並操縱)它們。底線:scipy中的CSR格式是一種「真正的」CSR格式,你不需要編寫自己的解析器(只要你不關心你的情況,不必要的data數組)。
另請注意:CSR format中的矩陣總是由三個數組表示,而不是兩個。

+0

謝謝!這是我沒有的缺失信息。我意識到有三個數組表示,但指針部分將分開寫。 –