我想根据给定的每个元素的权重从列表中选择一些项目。输出的长度未知。这需要做很多次。
所以,说我有一个像[id, probability]
这样的[[1, 0.2], [2, 0.3], [3, 0.45], [4, 0.05], [5,1.]]
列表,我想得到像[[1,3,5], [5], [3,5], [5], [1,2,4,5], ...]
这样的东西>
这是我的代码。它可以工作,但是速度很慢(列表很长,[id, probability]
的元素超过10,000,而我的结果是selection
的数以千计)。您知道有什么方法可以使这个过程快得多吗?
import numpy as np
items = [[1, 0.2], [2, 0.3], [3, 0.45], [4, 0.05], [5,1.]]
combinations = []
for n in range(1000):
selection = []
for i in items:
chosen = np.random.choice([True, False], p=[i[1], 1.-i[1]])
if chosen:
selection.append(i[0])
combinations.append(selection)
我想根据给定的每个元素的权重从列表中选择一些项目。输出的长度未知。这需要做很多次。所以,说我有一个[id,...
您可以按如下方式对采样步骤进行矢量化: