SciPyスパース行列の場合、todense()
またはtoarray()
を使用してNumPy行列または配列に変換できます。逆を行う関数は何ですか?
私は検索しましたが、どのキーワードが正しいヒットになるべきかわかりませんでした。
スパース行列を初期化するときに、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 '<type 'numpy.int32'>'
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
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 を参照してください。
逆関数については、関数はinv(A)
ですが、巨大な行列の場合は非常に計算コストがかかり不安定になるため、使用することはお勧めしません。代わりに、逆の近似値を使用する必要があります。または、Ax = bを解く場合、Aは本当に必要ありません。-1。