numpy - случайная выборка, пропорциональная значениям
У меня есть числовые значения массива и еще один вес массива. Каков наиболее эффективный способ выборки из значений, пропорциональных весовым значениям? Например:
values = [1,5,6]
weights = [2,3,5]
Следует пробовать 1 - 20%, 5-30% и 6-50% времени.
В настоящее время я делаю это таким образом, но уверен, что есть более элегантный способ.
import random
sample = random.random()
thresh = weights.cumsum() / weights.sum()
for i in range(len(values)):
if thresh[i] < sample:
return values[i]