从列表中找到近似模式 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
我有一个列表,其中包含 [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