matrices convert array python numpy scipy sparse-matrix

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