我有一个包含13列和10000行的文本文件。我应计算第二和第五列的平均值和标准偏差,但每次计算200个数字。 代码:
with open('myfile.txt') as f:
lis1 = [float(line.split()[1]) for line in f]
lis2 = [float(line.split()[4]) for line in f]
i = 0
while (i < len(lis1)):
g1 = sum(lis1[i:i+200])/200
g2 = sum(lis2[i:i+200])/200
i=i+200
我无法理解为什么g2是空的,我该如何解决?
答案 0 :(得分:1)
这是因为当你创建了list&#34; lis1&#34;你遍及整个文件,这意味着你应该重置它。尝试在lis1和lis2调用之间使用f.seek(0)
。
答案 1 :(得分:1)
如果可能,您应该只阅读一次文件。否则,您必须重置文件指针才能再次读取它。注意:代码未经测试。
lines = []
with open('myfile.txt') as f:
lines = [line.split() for line in f]
i = 0
# Now file is closed - operate on the lines read in.
inc = 200
for i in range(0, len(lines), inc):
# Get all column total
column_total = [sum(x) for x in zip(*lines[i:i+inc]) ]
g1 = column_total[1] / inc
g2 = column_total[4] / inc