Делать в среднем по куче файлов - PullRequest
0 голосов
/ 06 марта 2020

У меня есть 1000 файлов, и каждый файл имеет 6 столбцов информации 1000 точек. Я хотел бы сделать среднее значение столбца № 6 для каждой точки в 1000 временных шагов. Я имею в виду, что для каждой точки я хотел бы иметь в среднем 1000 временных шагов и затем сохранять их в текстовом файле. Код, который я написал, имеет проблемы с пониманием процесса. Он может вычислить среднее значение для каждой точки, но в конце он дает мне одно число.

import os
import numpy as np

l = [f for f in sorted(os.listdir('.')) if f.startswith('config')]


maxnum = np.max([int(os.path.splitext(f)[0].split('_')[1]) for f in l])
l = ['configuration_%d.out' % i for i in range(maxnum)]


for i, d in enumerate(l): 
    a = np.loadtxt(d).T 
    num = os.path.splitext(d)[0]
    #j = np.zeros(1001)

    x = np.mean(a[5])

    #y = np.mean(a[4])

    np.savetxt("foo.txt",x)

Я буду признателен, если вы сможете оказать мне услугу. Спасибо всем

1 Ответ

0 голосов
/ 06 марта 2020

Отвечая на ваш вопрос, вы каждый раз перезаписываете foo.txt, поэтому вы видите только один номер.

открыть текстовый файл перед l oop, а затем просто добавить информацию:

txt_file = open('foo.txt', 'w')
for i, d in enumerate(l):
     txt_file.write(f'{x}\n')
txt_file.close()

две вещи:

  1. f "" это f -строка, доступная для использования с python3 .6. Если вы используете более старую версию, просто отформатируйте строку, как вы хотите.
  2. \ n означает новую строку, поэтому вы пишете каждое число в следующей строке.
...