大規模スパース行列の0ではない要素番号(i, j)がベクトルのi番目とj番目の差となる行列を作りたいです.
python
1#A is a sparse matrix 2#the dimension of A is 1000000 × 1000000 3rows, cols = A.nonzero() 4index = [(i, j) for i, j in zip(rows,cols)]#0ではない要素番号の集合 5 6print(len(index)) 7#5000000 8 9B = A.copy() 10#y is a vector 11#the dimension of y is 1000000 12for i, j in index: 13 B[i, j] = y[i] - y[j]
これで実際に行列を作ることはできます.
しかし,上にも示したとおり大規模な行列を使っています.そのため,実行するととても時間がかかってしまいます.
pythonではfor文の実行速度が遅いためだと考えています.
もっと早く実行できる方法があれば教えてください.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/22 06:03