De la matriz dispersa

Wassim Ayari:

Tengo una matriz muy grande (como 10000x10000) para almacenar en un archivo. Así que, obviamente, se necesita un buen montón de memoria inútil ya que tiene una gran cantidad de ceros.

He encontrado en Wikipedia una forma de almacenar dicha matriz:

https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_(CSR,_CRS_or_Yale_format)

Yo era capaz de conseguir los tres conjuntos vinculados a la matriz. Pero ahora deseo hacer lo contrario: Teniendo en cuenta estas tres matrices, me gustaría restaurar la matriz original. Yo sé en qué columna debería colocar los elementos en la matriz A (bien que se le da en la gama JA), pero no sé lo que la fila i debería colocarlos.

Cualquier ayuda por favor?

Muchas gracias.

toastedDeli:

Para averiguar qué fila para ponerlos en, es necesario utilizar IA y A.

al revés de trabajo y el cálculo de la lista

IA' = {IA[m+1] - IA[m], IA[m] - IA[m-1], IA[m-1] - IA[m-2],..., IA[2]-IA[1], IA[1]-IA[0]}

la lista IA' le dirá cuántas entradas de A a añadir a la fila inferior de la matriz.

Usted ya sabe dónde agregar ellos, usando J.

Entonces

IA' = [4-3, 3-2, 2-0, 0]
IA' = [1,1,2,0] 

para el ejemplo wikipedia enumeran a continuación:

   A  = [5,8,3,6]
   IA = [0,0,2,3,4]
   JA = [0,1,2,1]

porque los medios de último elemento de A va en la fila inferior, el segundo al último va en la fila hacia arriba de eso, y los 2 primeros elementos de un ir en la tercera fila hacia arriba. La fila superior no tiene entradas.

revertir IA' IA '' podría hacer que la aplicación más sencilla que se puede trabajar por las filas en su lugar, e interpretarlo como esto:

IA'' = [0,2,1,1]
A    = [5,8,3,6]

en la fila superior, 0 entradas. siguiente fila tiene 2 entradas [5,3]. próximo 2 tener 1 entrada cada uno, [3] y [6], respectivamente.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=235211&siteId=1
Recomendado
Clasificación