我正在尝试找出一种有效的方法来从标准化频率数组中采样索引。从本质上讲,我有大量数据,因此不可能将数据存储在一个表中,该表每次出现一个元素(允许重复的元素)。
作为一个小例子来说明我正在尝试做的事情。假设我在Python中具有以下数组:
freqs = [.2, .1, .1, .3, .3]
现在,我想要的是基本上能够产生一个整数,该整数通过对0到4之间的值进行采样来索引上面的数组,该值遵循与每个索引位置相关的分布。也就是说,如果抽样了100个索引,我希望其中的20%为0(平均)。
答案 0 :(得分:0)
您可以查看this答案来回答几乎相同的问题。
您只需要定义数字及其频率。
如果您使用的是python> = 3.6,则可以使用开箱即用的功能
from random import choices
indices = [1,2,3]
probs = [.3, .3, .4]
def get_rand_choice():
return choices(indices, probs)