Извлечение элементов из списка списка - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть набор данных, который является списком, и его элементы снова являются списком. Например, myList = [[1,2,3], [4,5,6], ......., [7,8,9], [11,12,14]]. Я хочу случайным образом выбрать группу элементов из этого списка - скажем, [4,5,6] и [11,12,14]. Как этого добиться?

Я попробовал следующее:

# Suppose List_1 has 1000 elements(lists) and I want 100 elements
indices = np.random.choice(myList, size = 100, replace = None )
new_list = myList[indices]

Видимо, приведенный выше код не работает. Сообщение об ошибке: «индексы списка должны быть целыми числами или кусочками, а не списком»

Может ли кто-нибудь помочь мне с этим? Мое реальное намерение состоит в том, чтобы выбрать точки данных (списки) из исходного набора данных (списка), чтобы создать пакет данных для обучения алгоритму ML.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Используйте random.sample, который принимает дополнительный параметр, чтобы указать количество случайных элементов для выбора из совокупности:

import random

myList = [[1,2,3],[4,5,6],[7,8,9],[11,12,14]]
print(random.sample(myList, 2))
0 голосов
/ 06 ноября 2018

У вас есть ошибка в последней строке, но все же я думаю, что она ближе всего к тому, что вы хотели (используя numpy)

indices = np.random.choice(range(len(myList)), size = 100, replace = None )
new_list = myList[indices]
0 голосов
/ 06 ноября 2018

Вы можете рассмотреть случайные - Генераторы случайных переменных, где, как будто вы хотите выбрать любое количество элементов списка, тогда @Austin предложил использовать sample со случайным, но справедливый выбор - случайный.

Использование random.sample будет ...

>>> lst
[['15', '48', '698'], ['10', '32', '66'], ['78', '501', '23']]

>>> random.sample(population=lst, k=2)
[['78', '501', '23'], ['15', '48', '698']]

При использовании random.choices

>>> random.choices(population=lst, k=2)
[['15', '48', '698'], ['15', '48', '698']]

Примечание

Посмотрите на Случайный Док здесь

random.sample (population, k) Возвращает список уникальных элементов длиной k выбирается из последовательности или набора населения. Используется для случайной выборки без замены.

random.choices (совокупность, вес = нет, *, cum_weights = нет, k = 1) Возвращает список элементов размером k, выбранных из совокупности с замена. Если популяция пуста, возникает ошибка IndexError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...