Как уменьшить размер файла CSV? ⇐ Python

Программы на Python
Anonymous
Как уменьшить размер файла CSV?

Сообщение Anonymous »

Предположим, у меня есть один CSV-файл размером m×n, что означает m строк и n столбцов. Я хочу уменьшить его размерность, заменив среднее значение соответствующей подматрицы.
Пример 1:
У нас есть матрица 6×6 (файл CSV) ):

Код: Выделить всё

col1,col2,col3,col4,col5,col6
a1,b1,c1,d1,e1, f1
a2,b2,c2,d2,e2, f2
a3,b3,c3,d3,e3, f3
a4,b4,c4,d4,e4, f4
a5,b5,c5,d5,e5, f5
a6,b6,c6,d6,e6, f6
Если нам нужна матрица 2×2, то результирующий файл CSV должен быть ниже:

Код: Выделить всё

col1, col2
a',  d'
a", d"
Где

Код: Выделить всё

a'=(a1+a2+a3+b1+b2+b3+c1+c2+c3)/9
a"=(a4+a5+a6+b4+b5+b6+c4+c5+c6)/9
d'=(d1+d2+d3+e1+e2+e3+f1+f2+f3)/9
d"=(d4+d5+d6+e4+e5+e6+f4+f5+f6)/9
Пример: 2
У нас есть матрица 5×6 (файл CSV):

Код: Выделить всё

col1,col2,col3,col4,col5,col6
a1,b1,c1,d1,e1, f1
a2,b2,c2,d2,e2, f2
a3,b3,c3,d3,e3, f3
a4,b4,c4,d4,e4, f4
a5,b5,c5,d5,e5, f5
Если нам нужна матрица 2×2, то результирующий файл CSV должен быть ниже:

Код: Выделить всё

col1, col2
a',  d'
a", d"
Где

Код: Выделить всё

a'=(a1+a2+a3+b1+b2+b3+c1+c2+c3)/9
a"=(a4+a5+b4+b5+c4+c5)/6
d'=(d1+d2+d3+e1+e2+e3+f1+f2+f3)/9
d"=(d4+d5+e4+e5+f4+f5)/6
Пример 3:
У нас есть матрица 6×5 (файл CSV):

Код: Выделить всё

col1,col2,col3,col4,col5,col6
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5
a6,b6,c6,d6,e6
Если нам нужна матрица 2×2, то результирующий файл CSV должен быть ниже:

Код: Выделить всё

col1, col2
a',  d'
a", d"
Где

Код: Выделить всё

a'=(a1+a2+a3+b1+b2+b3+c1+c2+c3)/9
a"=(a4+a5+a6+b4+b5+b6+c4+c5+c6)/9
d'=(d1+d2+d3+e1+e2+e3)/6
d"=(d4+d5+d6+e4+e5+e6)/6
Мне нужен код Python, который может уменьшить размерность, поместив среднее значение суммы всех подматриц. Например, в примере 1 мы дали матрицу 6×6, нам нужна матрица 2×2, поэтому мы рассматриваем (6÷2) × (6÷2) = подматрицу 3×3 и вычисляем среднее значение 9 элементов матрицы 3×3. , который является одним элементом результирующей матрицы 2×2 и так далее.
И в примере 2, если заданное измерение не кратно результирующему размеру, мы используем функцию потолка, мы сначала начинаем учитывая потолок(5÷2)×(6÷2) = матрицу 3×3, и в конце(угол) мы не можем получить матрицу 3×3, мы просто вычисляем среднее значение оставшихся элементов, как мы видим в пример2, пример3.

Подробнее здесь: https://stackoverflow.com/questions/790 ... f-csv-file

Вернуться в «Python»