У меня есть целое число, которое нужно разделить на ячейки в соответствии с распределением вероятности. Например, если у меня было N=100
объектов, идущих в [0.02, 0.08, 0.16, 0.29, 0.45]
, тогда вы можете получить [1, 10, 20, 25, 44]
.Как я могу сгенерировать случайную выборку счетчиков bin, учитывая последовательность вероятностей bin?
import numpy as np
# sample distribution
d = np.array([x ** 2 for x in range(1,6)], dtype=float)
d = d/d.sum()
dcs = d.cumsum()
bins = np.zeros(d.shape)
N = 100
for roll in np.random.rand(N):
# grab the first index that the roll satisfies
i = np.where(roll < dcs)[0][0]
bins[i] += 1
В действительности, N и мое число бункеров очень велико, поэтому зацикливания на самом деле не является жизнеспособным вариантом. Есть ли способ, которым я могу векторизовать эту операцию, чтобы ускорить ее?
Конечно, я использую термин биннинг и безнадзорность смотреть на гистограмму. Благодаря тонну! – Matt
Не беспокойтесь. Я позволил изменить название вашего вопроса, чтобы облегчить поиск других. –