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

我有大量数据,我想对相同整数的值进行分组,然后取平均值。

例如:

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

我想按如下方式分组:

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

...然后取平均值并将所有平均值放入一个新数组中。


qq_花开花谢_0
浏览 106回答 4
4回答

慕田峪7331174

假设您想按数字的整数值进行分组(因此数字向下舍入),这样的方法可以工作:>>> 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已经排序,如您的示例所示。

潇湘沐

如果您使用其他库没有问题:import pandas as pdimport numpy as npa = [0, 0.5, 1, 1.5, 2, 2.5]print(pd.Series(a).groupby(np.array(a, dtype=np.int32)).mean())给出:0    0.251    1.252    2.25dtype: float64

浮云间

如果您想要使用字典的方法,您可以像这样继续: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)

沧海一幻觉

您可以使用groupby轻松获得它(您可能需要先对列表进行排序):from itertools import groupbyfrom statistics import meana = [0, 0.5, 1, 1.5, 2, 2.5]for k, group in groupby(a, key=int):    print(mean(group))会给:0.251.252.25
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python