numpy.matrixまたは配列をscipy sparse matrixに変換する方法

SciPyの疎行列の場合、 todense()または toarray()を使用してNumPy行列または配列に変換できます。逆関数を実行する関数は何ですか?

私は検索しましたが、どのようなキーワードが適切なヒットになるはずがありません。

43

3 答え

スパース行列を初期化するときは、引数としてnumpyの配列または行列を渡すことができます。たとえば、CSRマトリックスの場合、次のことができます。

>>> import numpy as np
>>> from scipy import sparse
>>> A = np.array([[1,2,0],[0,0,3],[1,0,4]])
>>> B = np.matrix([[1,2,0],[0,0,3],[1,0,4]])

>>> A
array([[1, 2, 0],
       [0, 0, 3],
       [1, 0, 4]])

>>> sA = sparse.csr_matrix(A)   # Here's the initialization of the sparse matrix.
>>> sB = sparse.csr_matrix(B)

>>> sA
<3x3 sparse matrix of type ''
        with 5 stored elements in Compressed Sparse Row format>

>>> print sA
  (0, 0)        1
  (0, 1)        2
  (1, 2)        3
  (2, 0)        1
  (2, 2)        4
75
追加された

scipyにはいくつかの疎な行列クラスがあります。

bsr_matrix(arg1 [、shape、dtype、copy、blocksize])スパース行行列をブロックする
  coo_matrix(arg1 [、shape、dtype、copy])COOrdinate形式の疎行列。
  csc_matrix(arg1 [、shape、dtype、copy])圧縮スパース列行列
  csr_matrix(arg1 [、shape、dtype、copy])圧縮スパース行行列
  dia_matrix(arg1 [、shape、dtype、copy])DIAgonalストレージを持つ疎行列
  dok_matrix(arg1 [、shape、dtype、copy])キーベースの疎行列の辞書。
  lil_matrix(arg1 [、shape、dtype、copy])行ベースのリンクリストの疎行列

いずれも変換を行うことができます。

import numpy as np
from scipy import sparse
a=np.array([[1,0,1],[0,0,1]])
b=sparse.csr_matrix(a)
print(b)

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

http://docs.scipy.org/doc/scipy/を参照してください。 reference/sparse.html#usage-information を参照してください。

17
追加された

逆関数の場合、関数は inv(A)ですが、巨大行列の場合計算コストが高く不安定であるため、使用しないことをお勧めします。逆に近似を使用するか、Ax = bを解きたい場合はA -1 は必要ありません。

0
追加された
問題は、行列演算と逆ではなく、numpy行列/配列を使ってscipy sparse行列を生成する方法を尋ねます。
追加された 著者 Virgil Ming,