Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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 阅读、分组、寻找平均值_Python - Fatal编程技术网

Python 阅读、分组、寻找平均值

Python 阅读、分组、寻找平均值,python,Python,我是python的新手…请帮我解决以下问题 我有一个*.txt格式的数据,4列name | items | a1 | a2 |,这里我只对第3列和第4列感兴趣。“项目”列类似于一组[1,1],[12,12,2]等,我需要打开文本文件,读取文件并将所有类似项目列组合在一个数组中,找到该数组的最大值,然后取由类似项目组成的所有数组的平均值。最后我将得到1个值,它是数组中单个最大值的平均值 例如,项目[1,1]=[55,66] 最大的项目[1,1]是66 项目[12,12]=[56 89 88] 最大

我是python的新手…请帮我解决以下问题

我有一个*.txt格式的数据,4列
name | items | a1 | a2 |
,这里我只对第3列和第4列感兴趣。“项目”列类似于一组
[1,1]
[12,12,2]
等,我需要打开文本文件,读取文件并将所有类似项目列组合在一个数组中,找到该数组的最大值,然后取由类似项目组成的所有数组的平均值。最后我将得到1个值,它是数组中单个最大值的平均值

例如,
项目[1,1]=[55,66]

最大的项目
[1,1]
66

项目
[12,12]
=
[56 89 88]

最大的项目
[12,12,2]
89

项目
[23 23]
=
[45,33,33.5]

最大的项目
[23]
45

平均值=项目的最大值(
[1,1]+[12,12]+..+..+[23 23]
)=(
66+89+..+45/n
)=
x

其中n是类似项目的总数量,例如这里是6

名称项目a1 a2
以下是Python教程中的一些部分,您可能会发现这些部分很有帮助:


到目前为止你已经走了多远?你的问题有几个步骤,每个步骤都可以被视为一个单独的问题。请总结您的测试数据。太多的细节令人困惑。2.请发布一些您迄今为止所做尝试的摘要。“请帮帮我”的意思是“请帮帮我解决我已经尝试过但无法开始工作的问题。”我突然想到,如何只对类似的项目进行分组?像[1,1]=[55,66];[12,12]=[56 89 88]等等,我不知道如何将相似的内容进行分组。@pythonbengineer:(1)在提到自己时使用“i”——良好的语法有助于每个人阅读和理解你的问题。(2) 总结你的数据。(3) 发布一些到目前为止你所做的总结。(3) 用让你困惑的具体事情更新你的问题。(4) 请解释为什么第一行数据变成[1,1]=[55,66]。这毫无意义。请不要添加评论。请修正你的问题。
sty1    1      12      55
sty1    1      2       66

sty1   12       5      56

sty1   12       12     89

sty1   12       2     88

sty1   2      5      78

sty1   31      5      45

sty1   31      1      45

sty1   31      3      45   

sty1   31      8      45

sty1   4      23     45

sty1   4      12     45

sty1   23      31     45
sty1   23      1      33 

sty1   23      2      33.5
f = open("...")

d = {}

for line in f:
    x = line.split()
    if len(x) == 4: #skip empty lines
        k = x[1]
        v = float(x[3])
        if not k in d: d[k] = v
        elif v > d[k]: d[k] = v #because we only need max of values

f.close()

sm = sum(d.values())

print d
print sm
print sm / len(d)

>>> 
{'12': 89.0, '23': 45.0, '31': 45.0, '1': 66.0, '2': 78.0, '4': 45.0}
368.0
61.3333333333