gpt4 book ai didi

python - python中无替换的加权随机样本

转载 作者:太空狗 更新时间:2023-10-30 00:38:25 25 4
gpt4 key购买 nike

我需要从总体中获取一个k 大小 的样本而不进行替换,其中总体中的每个成员都有一个相关的权重 (W)。

Numpy 的 random.choices 不会在没有替换的情况下执行此任务,并且 random.sample 不会采用加权输入。

目前,这是我正在使用的:

P = np.zeros((1,Parent_number))
n=0
while n < Parent_number:
draw = random.choices(population,weights=W,k=1)
if draw not in P:
P[0,n] = draw[0]
n=n+1
P=np.asarray(sorted(P[0]))

虽然这可行,但它需要在数组、列表和数组之间来回切换,因此不太理想。

我正在寻找最简单易懂的解决方案,因为此代码将与其他人共享。

最佳答案

您可以将 np.random.choicereplace=False 一起使用,如下所示:

np.random.choice(vec,size,replace=False, p=P)

其中 vec 是您的人口,P 是权重向量。

例如:

import numpy as np
vec=[1,2,3]
P=[0.5,0.2,0.3]
np.random.choice(vec,size=2,replace=False, p=P)

关于python - python中无替换的加权随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43549515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com