是否存在numpy函数以从概率idx
的一维数组r
返回索引r[i]
。所有r[i]
非负数且总和为一。
答案 0 :(得分:1)
几乎内置:
# setup (do this once)
cs = r.cumsum()
# get a random value with probability r[i]
rn = np.random.uniform()
idx = cs.searchsorted(rn)
答案 1 :(得分:0)
scipy.stats即使根据要求不在NumPy中也可以提供帮助:
import scipy.stats
r = [.1,.8,.1]
x = range(len(r))
mydist = scipy.stats.rv_discrete(values=(x,r), name='mydist')
print mydist.rvs(size=20)
# array([1, 1, 0, 0, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1])