У меня есть код, который использует лог-вероятность. Когда я хочу взять выборку из распределения вероятностей, я использую
import numpy as np
probs = np.exp(logprobs)
probs /= probs.sum()
sample = np.random.choice(X, p=probs, size=1)[0]
Но здесь есть некоторые накладные расходы в возведении в степень и делении. И функция numpy random.choice
требует, чтобы вероятности были между 0 и 1 и суммой до 1.
Есть ли какие-либо быстрые методы для меня, чтобы сделать выборку с использованием ненормализованного массива логарифмической вероятности? Мне нужен только один образец за раз, и частота его прорисовки должна быть пропорциональна логарифмической вероятности.