2015-06-02 8 views
-1

У меня есть список из более чем миллиона кортежей и вам нужен список из 100 000 кортежей, случайно выбранных из этого исходного списка без замены. Я прочитал:Python Get Random Sample of List of Tuples

How do I pick 2 random items from a Python set?

но решение при условии (с использованием random.sample во время литья списка набора) не работает для кортежей.

Я использую Python 2.7

+2

Можете ли вы объяснить, как ваши данные хранятся более подробно? Приведенный пример отлично подходит для списков, кортежей и списков кортежей. – Loocid

+0

Проблема возникает из кастинга в набор, поскольку кортежи нельзя хэшировать. Данные, которые я пытаюсь выполнить без замены, представляют собой список кортежей. – Marjoram

+1

Не бросайте его в набор. 'random.sample ([(1,2), (3,4), (5,6), (1,41)], 2)' должно работать нормально. – Loocid

ответ

1

Вы можете попробовать свой список независимо от того, если элементы hashable или нет:

data = create_dataset() # List of data to be sampled 

n_samples = 100000 
samples = random.sample(data,n_samples) 
2

Не уверен, что если я полностью понимаю ваш вопрос, но random.sample может принимать как списки и кортежи:

random.sample([1,2,3,4,5],2) 
Out[620]: [2, 5] 

random.sample((1,2,3,4,5),2) 
Out[621]: [4, 1] 
+0

Я, хотя random.sample, отобранный с заменой, и именно поэтому в ссылке, которую я предоставил в вопросе, они передали список в набор – Marjoram

+0

Нет, это выборка без замены. – maxymoo

+1

@Marjoram: Нет, они называют 'set', потому что вопрос конкретно связан с выборкой из наборов, а до введения набора литералов' set ([a, b, c]) 'был способом создания набора' a', 'b' и' c'. – user2357112