为了账号安全,请及时绑定邮箱和手机立即绑定

Python:将相同的整数值分组,然后求平均值

Python:将相同的整数值分组,然后求平均值

qq_花开花谢_0 2023-08-08 17:01:55
我有大量数据,我想对相同整数的值进行分组,然后取平均值。例如:a = [0, 0.5, 1, 1.5, 2, 2.5]我想按如下方式分组:[0, 0.5] [1, 1.5] [2, 2.5]...然后取平均值并将所有平均值放入一个新数组中。
查看完整描述

4 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

假设您想按数字的整数值进行分组(因此数字向下舍入),这样的方法可以工作:


>>> a = [0, 0.5, 1, 1.5, 2, 2.5]

>>> groups = [list(g) for _, g in itertools.groupby(a, int)]

>>> groups

[[0, 0.5], [1, 1.5], [2, 2.5]]

那么求平均就变成:


>>> [sum(grp) / len(grp) for grp in groups]

[0.25, 1.25, 2.25]

这假设a已经排序,如您的示例所示。

查看完整回答
反对 回复 2023-08-08
?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果您使用其他库没有问题:


import pandas as pd

import numpy as np


a = [0, 0.5, 1, 1.5, 2, 2.5]

print(pd.Series(a).groupby(np.array(a, dtype=np.int32)).mean())

给出:


0    0.25

1    1.25

2    2.25

dtype: float64


查看完整回答
反对 回复 2023-08-08
?
浮云间

TA贡献1829条经验 获得超4个赞

如果您想要使用字典的方法,您可以像这样继续:


dic={}

a = [0, 0.5, 1, 1.5, 2, 2.5]

for items in a:

    if int(items) not in dic:

        dic[int(items)]=[]

    dic[int(items)].append(items)

print(dic)


for items in dic:

    dic[items]=sum(dic[items])/len(dic[items])

print(dic)


查看完整回答
反对 回复 2023-08-08
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您可以使用groupby轻松获得它(您可能需要先对列表进行排序):


from itertools import groupby

from statistics import mean


a = [0, 0.5, 1, 1.5, 2, 2.5]

for k, group in groupby(a, key=int):

    print(mean(group))

会给:


0.25

1.25

2.25


查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信