2012-04-28 8 views
11

スパースCSR形式に変換したい大きな行列があります。scipyからのアクセス値、列インデックス、およびrow_ptrデータCSRスパース行列

私が行うとき:Aが密集しているところ

import scipy as sp 
Ks = sp.sparse.csr_matrix(A) 

print Ks 

が、私はなど

(0, 0) -2116689024.0 
(0, 1) 394620032.0 
(0, 2) -588142656.0 
(0, 12) 1567432448.0 
(0, 14) -36273164.0 
(0, 24) 233332608.0 
(0, 25) 23677192.0 
(0, 26) -315783392.0 
(0, 45) 157961968.0 
(0, 46) 173632816.0 

を取得...

私は行インデックス、列インデックス、および値のベクトルを取得することができます使用:

Knz = Ks.nonzero() 
sparserows = Knz[0] 
sparsecols = Knz[1] 

#The Non-Zero Value of K at each (Row,Col) 
vals = np.empty(sparserows.shape).astype(np.float) 
for i in range(len(sparserows)): 

    vals[i] = K[sparserows[i],sparsecols[i]] 

スパースCSRフォーマット(Value、Column Index、Row Pointer)に含まれると思われるベクトルを抽出することは可能ですか?

SciPyのドキュメントでは、これらの3つのベクトルからCSRマトリックスを生成できると説明していますが、逆のことをして3つのベクトルを外に出したいと思います。

私には何が欠けていますか?

ありがとうございました!

答えて

14
value = Ks.data 
column_index = Ks.indices 
row_pointers = Ks.indptr 

これらの属性は文書化されていないと思われますが、変更される可能性がありますが、私はscipyのいくつかのバージョンで使用しています。

関連する問題