2010-12-30 19 views
4

Pythonでスパース行列を効率的に追加する方法を知りたいと思います。Pythonでスパース行列を効率的に追加する方法

大きなタスクをサブタスクに分割し、複数のCPUに分散させるプログラムがあります。各サブタスクは、結果をもたらす(lil_matrixとフォーマットされたscipyスパース行列)。

スパース行列の次元は100000x500000です。これは非常に巨大なので、結果的に得られる疎行列をすべて、Cコンパイルされた方法などを使用して単一の疎行列に合計する最も効率的な方法が本当に必要です。

+3

スパース行列を追加するための簡単かつ効率的な方法は、スパーストリプレット形式に変換することで、連結トリプレットを作成してから、スパース列形式に変換し直します。 –

+0

NumPyのlil_matricesに対する行列の追加は十分ではありませんか? –

+0

いいえ、それは十分に聞こえる。実際これは私の質問です。私はちょうどlil_matrix追加の仕組みがわからない - 私はscipyサイトで例を見つけることができませんでした。あなたが私の質問を解決する例を私に与えてくれたら – Alexandros

答えて

7

最も簡単な方法を試しましたか?

matrix_result = matrix_a + matrix_b 

ドキュメントは、これは速いかもしれ以下を示唆し、LIL行列のために遅くなることがあります警告している:

matrix_result = (matrix_a.tocsr() + matrix_b.tocsr()).tolil() 
関連する問題