нарисовать случайный элемент в NumPy
У меня есть массив вероятностей элементов, скажем,[0.1, 0.2, 0.5, 0.2]
, Массив суммирует до 1,0.
Используя обычный Python или numpy, я хочу нарисовать элементы, пропорциональные их вероятности: первый элемент примерно в 10% времени, второй 20%, третий 50% и т. Д. «Draw» должен возвращать индекс нарисованного элемента.
Я придумал это:
def draw(probs):
cumsum = numpy.cumsum(probs / sum(probs)) # sum up to 1.0, just in case
return len(numpy.where(numpy.random.rand() >= cumsum)[0])
Это работает, но это слишком запутанно, должен быть лучший способ. Благодарю.