NumPy Shuffle Two Arrays

  1. NumPy перемешивает два массива с помощью функции sklearn.utils.shuffle() в Python
  2. NumPy перемешивает два массива с помощью функции numpy.random.shuffle()
  3. NumPy перемешивает два соответствующих массива с помощью функции numpy.random.permutation() в Python

Из этого туториала Вы узнаете, как перемешать два массива NumPy в Python.

NumPy перемешивает два массива с помощью функции sklearn.utils.shuffle() в Python

Предположим, у нас есть два массива одинаковой длины или одинаковых начальных размеров, и мы хотим перетасовать их оба таким образом, чтобы соответствующие элементы в обоих массивах оставались соответствующими. В этом случае мы можем использовать функцию shuffle() внутри библиотеки sklean.utils в Python. Эта функция shuffle() принимает массивы в качестве входных параметров, последовательно перемешивает их и возвращает перемешанную копию каждого массива. См. Следующий пример кода.

import numpy as np
from sklearn import utils

array1 = np.array([[0,0], [1,1], [2,2]])
array2 = np.array([0,1,2])

array1, array2 = utils.shuffle(array1, array2)
print(array1)
print(array2)

Выход:

[[0 0]
 [2 2]
 [1 1]]
[0 2 1]

В приведенном выше коде мы перемешали два массива, array1 и array2, с помощью функции shuffle() внутри библиотеки sklearn.utils в Python. Сначала мы создали оба массива с помощью функции np.array(). Затем мы перемешали массивы с помощью функции shuffle() внутри библиотеки sklearn.utils и сохранили перемешанные массивы внутри array1 и array2. В конце концов, мы распечатали элементы внутри обоих массивов. Выходные данные показывают, что элементы обоих массивов соответствуют даже после перетасовки.

NumPy перемешивает два массива с помощью функции numpy.random.shuffle()

Если мы не хотим импортировать пакет sklearn и хотим достичь той же цели, что и предыдущий, с помощью пакета NumPy, мы можем использовать функцию shuffle() внутри библиотеки numpy.random. Эта функция shuffle() берет последовательность и рандомизирует ее. Затем мы можем использовать эту рандомизированную последовательность в качестве индекса для двух массивов, чтобы перемешать их. В следующем примере кода показано, как мы можем перемешать два массива с помощью функции numpy.random.shuffle().

import numpy as np

array1 = np.array([[0,0], [1,1], [2,2]])
array2 = np.array([0,1,2])

randomize = np.arange(len(array2))

np.random.shuffle(randomize)

array1 = array1[randomize]
array2 = array2[randomize]
print(array1)
print(array2)

Выход:

[[2 2]
 [0 0]
 [1 1]]
[2 0 1]

Сначала мы создали массивы с помощью функции np.array(). Затем мы создали последовательность целых чисел, равную длине второго массива, с помощью функции np.arange(len(array2)). После этого мы рандомизировали последовательность с помощью функции shuffle() внутри библиотеки np.random и использовали ее в качестве индекса для обоих массивов, чтобы перемешать их.

NumPy перемешивает два соответствующих массива с помощью функции numpy.random.permutation() в Python

Мы также можем использовать функцию permutation() внутри библиотеки numpy.random для создания случайной последовательности целых чисел в пределах указанного диапазона в Python. Затем эту последовательность можно использовать в качестве индекса для обоих массивов, чтобы перемешать их.

import numpy as np

def shuffle(x, y):
    p = np.random.permutation(len(y))
    return x[p], y[p]


array1 = np.array([[0,0], [1,1], [2,2]])
array2 = np.array([0,1,2])

array1, array2 = shuffle(array1, array2)
print(array1)
print(array2)

Выход:

[[0 0]
 [2 2]
 [1 1]]
[0 2 1]

В приведенном выше коде мы определили функцию shuffle(), которая принимает два массива и рандомизирует их с помощью функции permutation() внутри библиотеки numpy.random в Python. Мы задали длину рандомизированной последовательности равной количеству элементов во втором массиве с помощью функции len(y). Затем мы использовали рандомизированную последовательность p в качестве индекса для обоих массивов и вернули их. Перемешанные массивы, возвращаемые функцией shuffle(), хранятся внутри массивов array1 и array2.