计算python中文本文件列的平均值

时间:2015-10-26 12:10:03

标签: python with-statement

我有一个包含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是空的,我该如何解决?

2 个答案:

答案 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