2016-02-12 2 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]) 
Смежные вопросы