Tengo una matriz grande que me gustaría convertir a formato CSR disperso.Valor de acceso, índice de columna y datos row_ptr de la matriz escasa CSR scipy
Cuando hago:
import scipy as sp
Ks = sp.sparse.csr_matrix(A)
print Ks
Donde A es denso, me sale
(0, 0) -2116689024.0
(0, 1) 394620032.0
(0, 2) -588142656.0
(0, 12) 1567432448.0
(0, 14) -36273164.0
(0, 24) 233332608.0
(0, 25) 23677192.0
(0, 26) -315783392.0
(0, 45) 157961968.0
(0, 46) 173632816.0
etc ...
que pueda obtener vectores de índice de la fila, el índice de la columna, y el valor utilizando:
Knz = Ks.nonzero()
sparserows = Knz[0]
sparsecols = Knz[1]
#The Non-Zero Value of K at each (Row,Col)
vals = np.empty(sparserows.shape).astype(np.float)
for i in range(len(sparserows)):
vals[i] = K[sparserows[i],sparsecols[i]]
Pero ¿es posible extraer los vectores supuestamente contenidos en el formato CSR disperso (valor, índice de columna, puntero de fila)?
La documentación de SciPy explica que se podría generar una matriz de CSR a partir de esos tres vectores, pero me gustaría hacer lo contrario, sacar esos tres vectores.
¿Qué me estoy perdiendo?
¡Gracias por el tiempo!