使用Python从一组归一化频率中采样索引

时间:2018-07-15 21:10:24

标签: python probability sampling

我正在尝试找出一种有效的方法来从标准化频率数组中采样索引。从本质上讲,我有大量数据,因此不可能将数据存储在一个表中,该表每次出现一个元素(允许重复的元素)。

作为一个小例子来说明我正在尝试做的事情。假设我在Python中具有以下数组:

freqs = [.2, .1, .1, .3, .3]

现在,我想要的是基本上能够产生一个整数,该整数通过对0到4之间的值进行采样来索引上面的数组,该值遵循与每个索引位置相关的分布。也就是说,如果抽样了100个索引,我希望其中的20%为0(平均)。

1 个答案:

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