Разделить случайно два списка в Python таким же образом - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть два списка, которые содержат массивы с одинаковым размером.Список list_A состоит из 1000 элементов, каждый из которых имеет размер 20x20x3 и list_B массивов с размером 20x8.Я хочу разделить оба списка случайным образом одинаковым образом в 100 подсписках (и в конце каждый подсписок для list_A будет содержать 100 массивов numpy и то же самое для list_B).Я написал код, как это сделать только для одного списка:

def partition (list_in, n):
    random.shuffle(list_in)
    return [list_in[i::n] for i in range(n)]

total_lists_A = partition (list_A, 10)

Однако я хочу сделать то же самое для list_A и list_B таким же образом и вернуть total_lists_A и total_lists_B

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вы можете обернуть numpy.random.seed в свою функцию, чтобы сделать ее воспроизводимой.Что-то вроде (в зависимости от вашего подхода):

# note: will not work properly if your two lists are different shapes:
def my_partition(list_in, n):
    np.random.seed(1)
    idx = np.random.shuffle(list_in)
    return [list_in[i::n] for i in range(n)]

Или (немного другой подход, который должен работать)

def my_partition(list_in, n):
    np.random.seed(1)
    idx = np.random.choice(range(len(list_in)), len(list_in))
    split = np.split(idx, n)
    return [list_in[i] for i in split]
0 голосов
/ 06 декабря 2018

Я предполагаю, что вы делаете это для машинного обучения.Посмотрите на train_test_split

Если вы хотите сделать это с нуля, вы можете сначала сгенерировать вектор данных о длине (np.arange), затем переставить его и использовать его в качестве своих индексов(расщепление переставленных индексов на поезд и набор тестов)

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