2016-06-22 4 views
1

とscipyのダウンロードスパース行列を入力します。私はnumpyのはones_like()関数を持っているが、これは私の問題を解決していなかったことがわかり私はものを使用して値を交換したいと思いますscipyのダウンロード疎行列持っているもの

from scipy import sparse 
import numpy as np 

data = np.array([[1, 2, 3, 0, 5], [6, 0, 0, 9, 10], [0, 0, 0, 0, 15]]) 

print sparse.coo_matrix(data) 

を。

出力は次のようになります。これを行う最も簡単な方法は、直接スパース行列表現を操作することである

(0, 0)  1 
(0, 1)  1 
(0, 2)  1 
(0, 4)  1 
(1, 0)  1 
(1, 3)  1 
(1, 4)  1 
(2, 4)  1 

答えて

2

。それを行う方法は、あなたの表現の選択に依存します。 COO形式の場合は、

data.data[:] = 1 

となります.COO形式には、重複した項目を許可する奇妙な機能があります。 COO行列の位置が(1, 1)の場合、上記のコードでは両方のエントリが1に設定され、その結果、行列を別の形式に変換すると2の単一エントリになります。あなたの代わりに1の単一のエントリをしたい場合は、元の `coo`が密な配列から構築されている場合は、あなたではありません(私はそれを好きに起こる)` entry`機能を複製すること、

data.sum_duplicates() 
data.data[:] = 1 
+0

最初の重複を正規化することができます問題。これは、生データ、行、列配列から 'coo'を構築する場合にのみ発生します。 – hpaulj

関連する問題