构建numpy函数以随机从数组中获取索引

时间:2012-10-10 06:42:16

标签: python numpy

是否存在numpy函数以从概率idx的一维数组r返回索引r[i]。所有r[i]非负数且总和为一。

2 个答案:

答案 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])