我有一个元素列表。现在,我想指定从该列表中提取的绘图/采样数。不过,我必须确保
(i)所有样品包括所有原始元素
(ii)每个样本的样本大小不应相同
One update to my original question
UPDATE (iii) the minimum sample size is 2
例如:
list = [1,2,3,4,5,6,7,8,9,10]
draws = 4
samples = some_function(draws,list)
set(tuple(row) for row in sample) == set(list) # must be true
samples =[[1,2,3],[4,5],[6,7,8],[9,10]]
#4个绘图,一起包括所有元素,两个不同的样本大小,最小样本大小>;二,
问题:有没有一种简单的方法可以使用例如numpy.random
这样做?**
下面是一个使用np.random.permutation
和np.random.choice
的尝试。但是,这种方法并不总是在最终样本中包含所有列表元素
srch_list = list(range(100))
draws = 10
mid = round(len(srch_list)/draws)
n_leafs = range(mid-2,mid+3)
rnd_list = np.random.permutation(srch_list)
leafs = []
for i in range(draws):
idx = np.random.choice(n_leafs)
leafs.append(rnd_list[:idx])
rnd_list = rnd_list[idx:]
一种方法是:
现在,如果还需要洗牌列表中的元素,可以使用numpy.random.shuffle:
根据第一个答案(由
FBruzzesi
),我提出了以下解决方案:谢谢你的帮助
下面是另一个解决方案:
相关问题 更多 >
编程相关推荐