У меня есть двумерный массив вероятностей, p
, сумма которого равна 1,0:
p = np.array([[0.05, 0.05, 0.1 , 0. ],
[0.4 , 0.1 , 0.1 , 0.2 ]])
Я хочу иметь функцию, которая выбирает индекс из двумерного массива p
на основе вероятностей. Например, я должен вернуть [1,0]
с вероятностью 0.4
или [0,2]
с вероятностью 0.1
.
Если я вызову функцию sample(p)
, которая принимает массив двумерных вероятностей p. Затем с массивом 2d p
, как я определил выше, я мог ожидать индексы в диапазоне от [0,0]
до [1,3]
, но не включая [0,3]
, так как вероятность появления 0
равна:
sample(p)
>> [1,0]
sample(p)
>> [0,2]
sample(p)
>> [1,0]
sample(p)
>> [1,3]
Обычно я бы использовал numpy.random.choice
, однако он принимает только вероятности 1D массива. Есть ли способ, которым я могу расширить это, чтобы работать для двумерных массивов вероятности любого размера .