Вычисление среднего значения 2-го столбца для каждого текстового файла - PullRequest
0 голосов
/ 15 января 2019

У меня есть 10 текстовых файлов, и каждый из них имеет несколько строк и 3 столбца, разделенных запятой (','). Моя цель - вычислить среднее значение между 10 текстовыми файлами для каждой строки и использовать только значения 2-го столбца.

Например:

  • 1.txt: [1,2,3; 4,5,6; 7,8,9; ...]
  • 2.txt: [10,11,12; 13,14,15; 16,17,18; ...]
  • 3.txt: [19,20,21; 22,23,24; 25,26,27; ...]

Я хочу получить среднее значение 2-го столбца, скажем: A = (2 + 11 + 20) / 3 ... затем B = (5 + 14 + 23) / 3 ... затем C = (8 + 17 + 26) / 3

поэтому получу [A;B;C] => матрицу 3х1

На данный момент я могу только читать все файлы, но не могу правильно установить их в нужный мне массив.

file_list = glob.glob(os.path.join(os.getcwd(), "Chl_96", "*.txt"))

corpus = []

for file_path in file_list:
    with open(file_path) as f_input:
         corpus.append(f_input.read())
print (corpus)

1 Ответ

0 голосов
/ 15 января 2019

Поскольку вы четко не описали формат входных данных (на мой взгляд), вот что из-за этого, если предположить, что это примерно так на файл:

например, 2.txt:

10,11,12
13,14,15
16,17,18

Код для вычисления средних значений второго столбца каждой строки в каждом из входных файлов.Там только три файла с примерами, так вот, сколько средних рассчитывается.

from ast import literal_eval
import glob
import os

COL = 1  # Column (second) with value to be averaged.
means = []  # One for column specified above in each file.

file_list = glob.iglob(os.path.join(os.getcwd(), "Chl_96", "*.txt"))

for file_path in file_list:
    with open(file_path) as f_input:
        col_total = 0
        for i, line in enumerate(f_input):
            row = [col for col in line.rstrip().split(',')]
            col_total += int(row[COL])
        means.append(col_total / (i+1))

# Print calculated mean of second column of rows in each file.
print(means)  # -> [5.0, 14.0, 23.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...