python - 根据权重从python列表列表中随机选择列表

标签 python list numpy random

我有一个列表列表,其中每个列表都与一个分数/权重相关联。我想通过从第一个列表中随机选择来生成一个新的列表列表,以便得分较高的列表出现的频率更高。当 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/

相关文章:

java - 如何在另一个注释中创建和使用具有给定日期的 DateFormat?

python - Numpy 调整大小并填充特定值

python - np.array == num 比较很慢吗?可以使用多处理来加速吗?

python - 使用 vlines 在 Python 中自定义线条样式

python - PyPi 服务器响应 500

python - 如何读取通过 Python 中的 subprocess.popen 生成的文件的输出?

java - 在python/java中编辑acp的内容

java - 在 Java 中将列表或单个列表项作为方法参数传递是否更有效?

list - Lisp 中的 BINARY 到 DECIMAL - 使用非嵌套列表

python - Numpy 每行动态切片