使用变量的经验概率分布对数据帧中的行进行采样

时间:2017-09-30 21:20:34

标签: python random probability

我遇到了以下问题。

假设我们有一个变量很少的数据框。 Morover一个变量(var_A)是一个概率分数 - 它的值范围从0到1.我想从这个数据框中采样行,以便更有可能选择一个具有更高var_A值的行 - 所以我猜我必须从var_A的经验分布中得出。我知道如何实现var_A的edf函数,因为它建议here,但我不知道如何使用这个分布来抽样行。

你能帮我解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用numpy.random.choice以这种方式进行抽样:

import numpy as np

num_dists = 4
num_samples = 10
var_A = np.random.uniform(0, 1, num_dists)

# ensure var_A sums to 1
var_A /= np.sum(var_A)

samples = np.random.choice(len(var_A), num_samples, p=var_A)

print('var_A: ', var_A)
print('samples: ', samples)

示例输出:

var_A:  [ 0.23262621  0.02990421  0.22357316  0.51389642]
samples:  [3 0 0 2 0 0 2 3 3 2]