У меня есть список элементов. Теперь я хочу указать количество розыгрышей / образцов, которые я беру из этого списка. Однако я должен убедиться, что
(i) все образцы вместе включают все оригинальные элементы
(ii) размеры образцов не должны быть одинаковыми для каждого образца
Одно обновление к моему первоначальному вопросу
ОБНОВЛЕНИЕ (iii) минимальный размер выборки составляет 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 др aws, вместе включают все элементы, два разных размера выборки, минимальный размер выборки> 2
Вопрос: есть ли простой способ сделать это, например, 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:]