python - convert - Cómo transformar numpy.matrix o array en matriz escasa scipy
transpose a matrix in python (3)
Para la matriz dispersa de SciPy, se puede usar todense()
o toarray()
para transformar a la matriz o matriz NumPy. ¿Cuáles son las funciones para hacer lo inverso?
Busqué, pero no tengo idea qué palabras clave deberían ser las adecuadas.
En cuanto a la inversa, la función es inv(A)
, pero no recomendaré su uso, ya que para matrices enormes es muy computacionalmente costosa e inestable. En cambio, debe usar una aproximación al inverso, o si quiere resolver Ax = b realmente no necesita A -1 .
Hay varias clases de matriz dispersa en scipy.
bsr_matrix (arg1 [, shape, dtype, copy, blocksize]) Block Sparse Row matrix
coo_matrix (arg1 [, shape, dtype, copy]) Una matriz dispersa en formato COOrdinate.
csc_matrix (arg1 [, shape, dtype, copy]) Compressed Sparse Column matrix
csr_matrix (arg1 [, shape, dtype, copy]) Compressed Sparse Row matrix
dia_matrix (arg1 [, shape, dtype, copy]) Matriz dispersa con almacenamiento DIAgonal
dok_matrix (arg1 [, shape, dtype, copy]) Dictionary Of Keys based sparse matrix.
lil_matrix (arg1 [, shape, dtype, copy]) Lista dispersa basada en filas y matriz dispersa
Cualquiera de ellos puede hacer la conversión.
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
Ver http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information .
Puede pasar una matriz numpy o matriz como argumento al inicializar una matriz dispersa. Para una matriz de CSR, por ejemplo, puede hacer lo siguiente.
>>> 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