python — Читать, Транспонировать Большую Матрицу и Сохранить

У вас есть очень большая матрица, сохраненная в CSV-файле. Вы хотите транспонировать его и сохранить в другом файле. Вы не можете загрузить все данные в память одновременно. Как ты можешь это сделать?

Я думаю, что мы можем прочитать строку из файла и перенести ее в столбец и записать столбец в файл. Чтение и перенос строк в столбец — это нормально, но я не знаю, как записать в файл столбец за столбцом. Кто-нибудь может реализовать?

0

Решение

Во всяком случае, я дам вам подсказку:

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

Он должен быть перемещен в новое место nl в транспонированной матрице, скажем, nl = A [nr] [nc] или в терминах C / C ++

nl = nr x R + nc (R — количество столбцов, C — количество строк при транспонировании матрицы)
nr = oc и nc = or, поэтому заменив их на nl,

nl = oc x R + or
Так,

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

ИЛИ ЖЕ,

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

значения nl и ol никогда не выходят за пределы N-1, поэтому, учитывая деление по модулю с обеих сторон на (N-1), мы получаем следующее на основе свойств конгруэнтности:

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

Так что теперь вы можете просто прочитать один элемент за раз и поместить его в правильное положение в соответствующей транспонированной матрице.

0

Другие решения


По вопросам рекламы [email protected]