对于SciPy稀疏矩阵,可以使用todense()
或toarray()
转换为NumPy矩阵或数组。进行逆运算的功能是什么?
我进行了搜索,但不知道应该正确选择哪些关键字。
Answers:
初始化稀疏矩阵时,可以将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
sparse.csr_matrix
scipy中有几种稀疏矩阵类。
bsr_matrix(arg1 [,形状,dtype,副本,块大小])块稀疏行矩阵
coo_matrix(arg1 [,形状,dtype,副本])一个稀疏矩阵,为COOrdinate格式。
csc_matrix(arg1 [,shape,dtype,copy])压缩的稀疏列矩阵
csr_matrix(arg1 [,shape,dtype,copy])压缩稀疏行矩阵
dia_matrix(arg1 [,shape,dtype,copy])带有对角线存储
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。