我有一个列表列表,其中每个列表都与一个分数/权重相关联。我想通过从第一个列表中随机选择来生成一个新的列表列表,以便得分较高的列表出现的频率更高。当 population
只是一个普通列表时,下面的行工作正常。但我想将它用于列表列表。
population = [['a','b'],['b','a'],['c','b']]
list_of_prob = [0.2, 0.2, 0.6]
population = np.random.choice(population, 10, replace=True, p=list_of_prob)
这将给出输出 ValueError: a must be 1-dimensional
最佳答案
不是传递实际的列表,而是将带有索引的列表传递到列表中。
np.random.choice
已经允许这样做,如果你传递一个 int n
那么它就像你传递 np.arange(n)
.
所以
choice_indices = np.random.choice(len(population), 10, replace=True, p=list_of_prob)
choices = [population[i] for i in choice_indices]
关于python - 根据权重从python列表列表中随机选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973243/