Я пытаюсь выбрать данные из списка целых чисел. Сложность в том, что каждый образец должен иметь разный размер для эмуляции некоторых других данных, которые у меня есть. Я сейчас делаю для l oop, который может выполнить эту работу, но мне было просто интересно, есть ли более быстрые способы, о которых я не знаю.
Поскольку я думаю, что random.sample
должен быть быстрым, я делаю:
result = []
for i in range(100000):
size = list_of_sizes[i]
result.append(random.sample(data, size))
Таким образом, я получаю что-то вроде:
>>>list_of_sizes
[3, 4, 1, 2,...]
>>>result
[[1, 2, 3],
[3, 6, 2, 8],
[9],
[10, 100],
...]
I пытались использовать np.random.choice(data, size, replace=False)
и random.sample(data, k=size)
, но они не позволяют задавать массив разных размеров для векторизации операции (когда np.random.choice
принимает массив в параметре size
, он создает тензор, форма выходного сигнала которого равна это size
, но не массив образцов). В идеале я бы ожидал что-то вроде:
>>>np.random.choice(data, list_of_sizes, replace=False)
[[1, 2, 3],
[3, 6, 2, 8],
[9],
[10, 100],
...]