/ / Read, Transpozycja Big Matrix i Save - python, c ++, plik, file-io, transponuj

Czytaj, transponuj Big Matrix i Save - python, c ++, file, file-io, transpose

Macie bardzo dużą macierz zapisaną w pliku csv. Chcesz go przetransponować i zapisać w innym pliku. Nie można załadować wszystkich danych do pamięci jednocześnie. Jak możesz to zrobić?

Myślę, że możemy odczytać wiersz z pliku iprzetransponuj go do kolumny i zapisz kolumnę w pliku. Czytanie i transponowanie wierszy do kolumny jest dla mnie w porządku, ale nie wiem, jak napisać do kolumny kolumny po kolumnie.

Odpowiedzi:

0 dla odpowiedzi № 1

W każdym razie dam ci wskazówkę:

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

Ma zostać przeniesiony do nowej lokalizacji nl w transponowanej macierzy, powiedzmy nl = A [nr] [nc] lub w warunkach C / C ++

nl = nr x R + nc (R - liczba kolumn, C to liczba wierszy podczas transpozycji macierzy) nr = oc i nc = lub, więc zastępując je dla nl,

nl = oc x R + or Więc,

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

LUB,

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

wartości nl i ol nigdy nie wykraczają poza N-1, więc biorąc pod uwagę podział modulo po obu stronach przez (N-1), otrzymujemy następujące, oparte na właściwościach kongruencji,

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

Teraz możesz po prostu przeczytać jeden element na raz i umieścić go we właściwej pozycji w odpowiedniej transponowanej macierzy.