/ / Leggi, Trasponi Big Matrix e Salva - python, c ++, file, file-io, trasposizione

Leggi, Trasponi Big Matrix e Salva - python, c ++, file, file-io, trasposizione

Hai una matrice molto grande salvata in un file CSV. Vuoi trasporlo e salvarlo in un altro file. Non è possibile caricare tutti i dati in memoria contemporaneamente. Come si può fare?

Penso che possiamo leggere una riga dal file etrasporre in una colonna e scrivere la colonna in un file. Leggere e trasporre righe su colonne è ok per me, ma non so come scrivere in un file colonna per colonna. Chiunque potrebbe implementare?

risposte:

0 per risposta № 1

Ad ogni modo ti darò un suggerimento:

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

Deve essere spostato nella nuova posizione nl nella matrice trasposta, ad esempio nl = A [nr] [nc], o in termini C / C ++

nl = nr x R + nc (R - numero di colonne, C è il conteggio delle righe quando la matrice viene trasposta) nr = oc e nc = o, quindi sostituendo questi per nl,

nl = oc x R + or Così,

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)

i valori di nl e ol non vanno mai oltre N-1, quindi considerando la divisione del modulo su entrambi i lati di (N-1), otteniamo quanto segue in base alle proprietà di congruenza,

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

Quindi ora puoi semplicemente leggere un elemento alla volta e metterlo nella sua posizione corretta nella matrice trasposta corrispondente.