小さな配列行います
In [435]: A=np.array([[1,0,2,0],[0,1,3,0],[3,0,0,4]])
In [436]: A
Out[436]:
array([[1, 0, 2, 0],
[0, 1, 3, 0],
[3, 0, 0, 4]])
In [437]: np.linalg.pinv(A)
Out[437]:
array([[ 0.61538462, -0.36923077, 0.04615385],
[-0.57692308, 0.44615385, 0.06923077],
[ 0.19230769, 0.18461538, -0.02307692],
[-0.46153846, 0.27692308, 0.21538462]])
スパースコピーしてください:toarray
の
In [439]: M=sparse.csr_matrix(A)
pinv
は前と同じものである:
In [441]: np.linalg.pinv(M.toarray())
Out[441]:
array([[ 0.61538462, -0.36923077, 0.04615385],
[-0.57692308, 0.44615385, 0.06923077],
[ 0.19230769, 0.18461538, -0.02307692],
[-0.46153846, 0.27692308, 0.21538462]])
は使用できませんスパース行列上に直接numpyを置く - それは正しい方法を知らないのでLY
In [442]: np.linalg.pinv(M)
...
LinAlgError: 0-dimensional array given. Array must be at least two-dimensional
そのデータ構造を読んであり、スパースlinalg inv
があるが、それはただspsolve(A,I)
です。 If the inverse of
A is expected to be non-sparse, it will likely be faster to convert
A to dense and use scipy.linalg.inv.
同じ警告がpinv
または同等のものに当てはまる可能性があります。
私は手を離れていません。pinv
はスパースリストにありますが、lsqr
があります。
===================
pseudo inverse of sparse matrix in python(2011)
擬似逆が密である可能性が高いという考えをサポートしています。しかし、それはまた、svds
を利用するまばらな解決策を示唆している。
また
How to calculate the generalized inverse of a Sparse Matrix in scipy
あなたは、いくつかの線形代数を学ぶ行く必要があります。あなたの行列は正方形ではなく、実際に正方行列だけが逆行列を持ちます。 – user2357112