我有10个文本文件,每个文件都有多行和3列,以逗号(<!d::Send , % "^#{" . (( flag := !flag ) ? "right" : "left" ) . "}"
)分隔。我的目标是通过仅使用第二列值来计算每行10个文本文件之间的平均值。
例如:
','
:1.txt
[1,2,3; 4,5,6; 7,8,9; ...]
:2.txt
[10,11,12; 13,14,15; 16,17,18; ...]
:3.txt
我想要第二列值的平均值,这就是说: A =(2 + 11 + 20)/ 3 ...然后B =(5 + 14 + 23)/ 3 ...然后C =(8 + 17 + 26)/ 3
因此,我将得到[19,20,21; 22,23,24; 25,26,27; ...]
=> 3x1矩阵
目前,我只能读取所有文件,但无法在所需的数组中正确设置它们。
[A;B;C]
答案 0 :(得分:0)
由于您尚未明确描述输入数据的格式(我认为),因此假设每个文件的格式如下:
例如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]