I need to obtain a set (k) from a population, where each member of the population has a weight (W) associated with it, without replacement
Numpy's random.choices will not perform this task without replacement, and random.sample won't take a weighted input.
Currently, this is what I am using
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]))
While this works, it reqires switching back and forth from arrays, to lists and back to arrays and is, therefore, less than ideal.
I am looking for the simplest and easiest to understand solution as this code will be shared with others.
Aucun commentaire:
Enregistrer un commentaire