NumPy Shuffle Duas Matrizes

Muhammad Maisam Abbas 30 janeiro 2023
  1. NumPy Shuffle Dois Arrays com a função sklearn.utils.shuffle() em Python
  2. NumPy Shuffle Dois Arrays com a função numpy.random.shuffle()
  3. NumPy Shuffle Dois Arrays Correspondentes com a Função numpy.random.permutation() em Python
NumPy Shuffle Duas Matrizes

Este tutorial irá apresentar como embaralhar duas matrizes NumPy em Python.

NumPy Shuffle Dois Arrays com a função sklearn.utils.shuffle() em Python

Suponha que temos dois arrays do mesmo comprimento ou mesmas dimensões principais e queremos embaralhá-los de forma que os elementos correspondentes em ambos os arrays permaneçam correspondentes. Nesse caso, podemos usar a função shuffle() dentro da biblioteca sklean.utils em Python. Esta função shuffle() pega os arrays como parâmetros de entrada, embaralha-os de forma consistente e retorna uma cópia embaralhada de cada array. Veja o seguinte exemplo de código.

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)

Resultado:

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

No código acima, embaralhamos os dois arrays, array1 e array2, com a função shuffle() dentro da biblioteca sklearn.utils em Python. Primeiro criamos os dois arrays com a função np.array(). Em seguida, embaralhamos os arrays com a função shuffle() dentro da biblioteca sklearn.utils e salvamos os arrays embaralhados dentro de array1 e array2. No final, imprimimos os elementos dentro de ambos os arrays. A saída mostra que os elementos de ambas as matrizes correspondem mesmo após a ordem aleatória.

NumPy Shuffle Dois Arrays com a função numpy.random.shuffle()

Se não quisermos importar o pacote sklearn e quisermos atingir o mesmo objetivo do anterior usando o pacote NumPy, podemos usar a função shuffle() dentro da biblioteca numpy.random. Esta função shuffle() pega uma sequência e a torna aleatória. Podemos então usar essa sequência aleatória como um índice para as duas matrizes para embaralhá-las. O exemplo de código a seguir nos mostra como podemos embaralhar dois arrays com a função 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)

Resultado:

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

Primeiro criamos os arrays com a função np.array(). Em seguida, criamos uma sequência de inteiros que é igual ao comprimento do segundo array com a função np.arange(len(array2)). Depois disso, randomizamos a sequência com a função shuffle() dentro da biblioteca np.random e a usamos como um índice para ambas as matrizes para embaralhá-las.

NumPy Shuffle Dois Arrays Correspondentes com a Função numpy.random.permutation() em Python

Também podemos usar a função permutation() dentro da biblioteca numpy.random para criar uma sequência aleatória de inteiros dentro de um intervalo especificado em Python. Essa sequência pode então ser usada como um índice para ambas as matrizes para embaralhá-las.

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)

Resultado:

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

No código acima, definimos uma função shuffle() que pega dois arrays e os randomiza com a função permutation() dentro da biblioteca numpy.random em Python. Especificamos o comprimento da sequência aleatória para ser igual ao número de elementos na segunda matriz com a função len(y). Em seguida, usamos a sequência aleatória p como um índice para ambas as matrizes e as retornamos. As matrizes embaralhadas retornadas pela função shuffle() são armazenadas dentro das matrizes array1 e array2.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn