Модуль Python random
имеет random.choices
для отбора проб с заменой и random.sample
для отбора проб без замены. * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Хотя 1001 * принимает список случайно выбранных элементов относительно первого измерения.
TypeError: Население должно быть последовательностью или набором. Для диктов используйте список (d).
С другой стороны, random.choices
не будет принимать наборы, поднимая
TypeError: объект 'set' не поддерживает индексирование.
Что меня интересует, так это то, что это недосмотр или есть существенная причина для ограничения random.sample
последовательностями и наборами, тогда как random.choices
ограничивается объектами, поддерживающими индексацию, несмотря на то, что функции имеют очень похожие цели.
P.S. если кто-то задается вопросом о том, как сэмплировать ndarray, numpy.random.choice
сэмплирует 1-мерные массивы как с заменой, так и без нее, а массивы более высокой размерности могут быть эффективно выбраны для любого измерения с расширенным индексированием, где индексы для этого измерения генерируются с помощью * 1024. *