Я очень новичок в Python, и я также много искал, чтобы найти вопрос, похожий на мой. Я хотел бы сделать что-то подобное, как описано в этом вопросе. Computing averages of records from multiple files with pythonВычисление среднего для нескольких файлов
Однако вместо того, чтобы принимать среднее значение каждого значения (как в этом примере все значения являются числовыми), я хотел бы взять среднее значение для одного столбца, но сохранить все то же значение для других столбцов»
Например:
fileA.txt:
0.003 0.0003 3 Active
0.003 0.0004 1 Active
fileB.txt:
0.003 0.0003 1 Active
0.003 0.0004 5 Active
, и я хотел бы, чтобы генерировать следующий выходной файл
output.txt
0.003 0.0003 2 Active
0.003 0.0004 3 Active
Хотя столбцы 1 и 2 также являются числовыми, они будут одинаковыми для одной позиции в 100 файлах. Поэтому меня интересует только среднее значение для каждого элемента в 100 файлах для столбца 3.
Кроме того, хотя код в вопросе Computing averages of records from multiple files with python работает для чтения моих файлов. Это не полезно, если у вас много файлов. Как я могу это оптимизировать?
мне удается читать мои файлы, используя следующий код:
import numpy as np
result = []
for i in my_files:
a = np.array(np.loadtxt(i, dtype = str, delimiter = '\t', skiprows = 1))
result.append(a)
result = np.array(result)
Я использовал подобный код предлагается в этом вопросе initialize a numpy array
Каждый из моих файлов будет в около 1500 строк на 4 колонки. Я попытался использовать np.mean, но это не работает, вероятно, потому что некоторые из моих данных являются строковыми.
Заранее благодарим за вашу помощь!
Чтобы все элементы были численными, попробуйте использовать карту, например. allDouble = map (lambda el: float (el), mixedTypeArray). Кроме того, не устанавливайте dtype как str, если вы хотите, чтобы они были числовыми. –
Спасибо!Если я не устанавливаю dtype на str, я получаю следующее сообщение об ошибке: ** ValueError: невозможно преобразовать строку в float: Transposon Inactive **. Как использовать эту функцию карты ... Я не понял, что вы имеете в виду (извините). – Fabs
Вам нужна четвертая колонка? Если вы не видите мой ответ ниже. map - полезная функция, которая позволяет применять функцию к каждому члену массива. 'Lambda' определяет функцию внутри функции карты. Это эквивалентно 'def toFloat (num): float (num); map (toFloat, arrayToBeConverted) '. Потребуется некоторое время, чтобы привыкнуть, но очень полезно, когда вы его получите. –