2016-02-12 97 views
0

我有我想通過列表的模式來總結的數據。當有多種模式時,我想隨機選擇模式。據我瞭解,在具有多種模式的列表中,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) 

回答

1

您可以使用Counter做到這一點:

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])