我有数据,我想通过列表的模式进行总结。当有多个模式时,我想随机选择模式。据我了解,在具有多种模式的列表中,scipy和统计模式函数分别返回第一种模式并引发异常。我已经完成了自己的功能(如下所示),但我想知道是否有更好的方法。
import random
def get_mode(l):
s = set(l)
max_count = max([l.count(x) for x in s])
modes = [x for x in s if l.count(x) == max_count]
return random.choice(modes)
答案 0 :(得分:1)
You can use Counter
to do this:
from collections import Counter
from random import choice
def get_mode(l):
c = Counter(l)
max_count = max(c.values())
return choice([k for k in c if c[k] == max_count])