【问题标题】:Calculate some averages in .txt python在 .txt python 中计算一些平均值
【发布时间】:2020-09-06 16:07:54
【问题描述】:

我有一个名为ecc.txt.txt 文件。它包含超过 8000 行数字。我想计算该文件中每 360 行的平均值。 代码如下:

import math

f = open(r'ecc.txt').read()
data = []
for line in data:
    sum = 0
for i in range (len(data)):
    if i % 360 != 0:
        sum = sum + ecc[i]
    else:
        average = sum / 360
        print(average)
        sum = 0

当我运行它时,什么也没有发生。我没有得到任何结果。代码只是运行并没有任何结果。

这段代码有问题吗? 谢谢。

【问题讨论】:

  • 你正在迭代data,这是一个空列表
  • 您应该考虑使用 itertools.islice 而不是将整个文件读入内存。您可能也想将该文本转换为数字。
  • 非常感谢您的建议。是的,我忘了在数据中输入 f。 @ThomasJungblut
  • 非常感谢您的建议,您是对的,我在将文本转换为数字时遇到了问题,但它解决了,谢谢。 @MarkMeyer

标签: python average


【解决方案1】:
avg_dict = {}
with open('ecc.txt') as f:
    data = f.read().split(' ')
    sum = 0
    i = 0
    for str_number in data:
       sum += int(str_number)
       i += 1
       if i % 360 == 0:
          avg_dict[i] = sum/360
          sum = 0

我假设您的文件文本有一个空格作为分隔符。否则,您可以在 split 方法中更改 sep 值。如果没有分隔符改变数据为:

data = list(f.read())

  

【讨论】:

  • 非常感谢。实际上,数据之间的分隔符是新行。这里是 ,txt 文件 0.00002 0.0003 0.0004 的例子,我认为,它应该以另一种方式分割。
  • 必须将其视为两个连续值之间的分隔符,在您报告的示例中,它们似乎由单个制表符“\t”分隔。我为代码做了一个示例,假设您报告的值是分开的,并且它有效!
【解决方案2】:

您的代码可以进行一些更改:

import math

data=[]
with open(r'ecc.txt') as f:
    for i in f:
        data.append(int(i))
for line in data:
    sum = 0
for i in range (len(data)):
    if i%360 !=0:
        sum = sum + ecc[i]
    else:
        average = sum/360
        print(average)
        sum=0

但请注意,此代码不包含每个 360 个元素的值(我想这对平均值来说不是问题),而且您没有最后一个元素的平均值

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2015-07-14
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2013-12-18
    • 1970-01-01
    相关资源
    最近更新 更多