/ / Leer, Transponer Big Matrix y Guardar - python, c ++, file, file-io, transpose

Leer, Transponer Big Matrix y Guardar - python, c ++, archivo, archivo-io, transponer

Tienes una matriz muy grande guardada en un archivo csv. Quieres transponerlo y guardarlo en otro archivo. No puede cargar todos los datos en la memoria al mismo tiempo. ¿Cómo puedes hacerlo?

Creo que podemos leer una fila del archivo yTranspóngalo a una columna y escriba la columna en un archivo. Leer y transponer filas a columnas está bien para mí, pero no sé cómo escribir en un archivo columna por columna. ¿Alguien podría implementarlo?

Respuestas

0 para la respuesta № 1

De todos modos te daré una pista:

ol = or x C + oc (consider arr[or][oc])

Se debe mover a la nueva ubicación nl en la matriz transpuesta, digamos nl = A [nr] [nc], o en términos C / C ++

nl = nr x R + nc (R: recuento de columnas, C es el recuento de filas cuando se transpone la matriz) nr = oc y nc = o, por lo tanto, reemplazándolos por nl,

nl = oc x R + or Asi que,

ol     = or x C     + oc
ol x R = or x C x R + oc x R
= or x N     + oc x R    (from the fact R * C = N)
= or x N     + (nl - or) --- from [eq 1]
= or x (N-1) + nl

O,

nl = ol x R - or x (N-1)

los valores de nl y ol nunca van más allá de N-1, por lo que considerando la división de módulo en ambos lados por (N-1), obtenemos lo siguiente en función de las propiedades de congruencia,

nl mod (N-1) = (ol x R - or x (N-1)) mod (N-1)
= (ol x R) mod (N-1) - or x (N-1) mod(N-1)
= ol x R mod (N-1), since second term evaluates to zero
nl = (ol x R) mod (N-1), since nl is always less than N-1

Así que ahora solo puede leer un elemento a la vez y colocarlo en su posición correcta en la matriz transpuesta correspondiente.