从列表中找到近似模式 python

find approximate mode from a list python

我有一个列表,其中包含 [62,62,65,67,68,69,3,3,3,1,1,30,30].

这样的值

如果我使用这个值创建一个 Counter 并取最大出现值,我得到它作为 3。

但是,如您所见,值 62-69 彼此接近,我想获得这些值的平均值作为出现次数最多的值。我们如何才能在 python 中实现这一点?

您可以将数据分组到范围内,然后找到众数 例如,将您的数据排列在 10 的范围内,我们得到

>>> l2 = [e//10 for e in l]
>>> l2
[6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 3, 3]

模式是 6

>>> Counter(l2).most_common(1)
[(6, 6)]

因此您的原始数据的众数应该接近该范围的中间值,6*10+5 = 65