NumPy Shuffle Duas Matrizes
-
NumPy Shuffle Dois Arrays com a função
sklearn.utils.shuffle()
em Python -
NumPy Shuffle Dois Arrays com a função
numpy.random.shuffle()
-
NumPy Shuffle Dois Arrays Correspondentes com a Função
numpy.random.permutation()
em Python
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
.
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