Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用.txt pyhton计算一些平均值_Python_Average - Fatal编程技术网

Python 用.txt pyhton计算一些平均值

Python 用.txt pyhton计算一些平均值,python,average,Python,Average,我有ecc.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 pri

我有ecc.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
当我运行它时,什么都不会发生。我是说,我没有得到任何结果。代码刚刚运行并结束,没有任何结果

这个代码有什么问题吗?
谢谢。

您的代码将进行一些更改:

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个元素的值(我想这不是平均值的问题),而且您也没有最后一个元素的平均值

您的代码将进行一些更改:

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
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
但是要注意,这段代码不包括每个第360个元素的值(我想这不是平均值的问题),而且最后的元素也没有平均值

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
我假设您的文件文本有一个空格作为分隔符。否则,可以在拆分方法中更改sep值。如果没有分隔符,则将数据更改为:

data = list(f.read())

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

data = list(f.read())

  

您正在迭代<代码>数据< /代码>,这是一个空的表,您应该考虑使用ItRealToS.ISLICE,而不是将整个文件读入内存。您可能也想将该文本转换为数字。非常感谢您的建议。是的,我忘了在数据中输入f@Thomasjungblutt非常感谢你的建议,你是对的,我在将文本转换为数字时遇到问题,但问题解决了,谢谢@MARMYYER正在迭代<代码>数据< /代码>,这是一个空的表,您应该考虑使用ItRealToS.ISLICE,而不是将整个文件读入内存中。您可能也想将该文本转换为数字。非常感谢您的建议。是的,我忘了在数据中输入f@Thomasjungblutt非常感谢你的建议,你是对的,我在将文本转换为数字时遇到问题,但问题解决了,谢谢@谢谢你。实际上,数据之间的分隔符是新行。下面是txt文件0.00002 0.0003 0.0004的示例,我认为应该以另一种方式拆分它。它必须被视为两个连续值之间的分隔符,在您报告的示例中,它们似乎由单个选项卡“\t”分隔。我为代码做了一个示例,假设值在您报告时是分开的,它是有效的!非常感谢你。实际上,数据之间的分隔符是新行。下面是txt文件0.00002 0.0003 0.0004的示例,我认为应该以另一种方式拆分它。它必须被视为两个连续值之间的分隔符,在您报告的示例中,它们似乎由单个选项卡“\t”分隔。我为代码做了一个示例,假设值在您报告时是分开的,它是有效的!