Mezclar un array en Python

Muhammad Waiz Khan 10 octubre 2023
  1. Mezclar un array en Python usando el método random.shuffle()
  2. Mezclar un array en Python usando el método shuffle() del módulo sklearn
Mezclar un array en Python

En este tutorial, veremos los diversos métodos para mezclar un array en Python. El reordenamiento de un array significa reorganizar las posiciones de los elementos en el array. Una de las aplicaciones de mezcla aleatoria de matrices está en el entrenamiento de modelos, donde necesitamos mezclar nuestro conjunto de datos para mejorar la calidad de entrenamiento del modelo. También podría utilizarse en muchas aplicaciones de estadística.

Mezclar un array en Python usando el método random.shuffle()

El método random.shuffle() toma una secuencia como entrada y la baraja. Lo importante a tener en cuenta aquí es que random.shuffle() no devuelve una nueva secuencia como salida, sino que baraja la secuencia original. Por lo tanto, la secuencia de entrada válida solo puede ser tipos de datos mutables como un array o una lista, etc.

El método random.shuffle() solo funciona en secuencias 1D. El siguiente código de ejemplo demuestra cómo usar random.shuffle() para mezclar un array en Python.

import random
import numpy as np

mylist = ["apple", "banana", "cherry"]
x = np.array((2, 3, 21, 312, 31, 31, 3123, 131))

print(x)
print(mylist)

random.shuffle(mylist)
random.shuffle(x)

print(x)
print(mylist)

Producción :

[   2    3   21  312   31   31 3123  131]
['apple', 'banana', 'cherry']
[3123   21  312    3    2  131   31   31]
['banana', 'apple', 'cherry']

Mezclar un array en Python usando el método shuffle() del módulo sklearn

El método sklearn.utils.shuffle(array, random_state, n_samples) toma secuencias indexables como matrices, listas o DataFrames, etc. con la misma primera dimensión como entrada y devuelve las copias de las secuencias barajadas proporcionadas como entrada.

sklearn.utils.shuffle() no cambia la entrada original pero devuelve la copia aleatoria de la entrada. La entrada puede ser una o varias secuencias. El parámetro random_state se utiliza para controlar la generación aleatoria de números. Si se establece en algún número entero, el método devolverá la misma secuencia aleatoria cada vez. n_samples representa el número de muestras, y su valor predeterminado es igual a la primera dimensión del valor predeterminado de entrada y no debe ser mayor que la longitud del array(s) de entrada.

Nota
Si la entrada es 2D, el método sklearn.utils.shuffle() solo mezclará las filas.

El siguiente código de ejemplo demuestra cómo usar el método sklearn.utils.shuffle() para obtener una (s) matriz (s) barajada (s) en Python.

from sklearn.utils import shuffle
import numpy as np

x = np.array([[1, 2, 3], [6, 7, 8], [9, 10, 12]])
y = ["one", "two", "three"]
z = [4, 5, 6]

print(x)
print(y)
print(z)

x, y, z = shuffle(x, y, z, random_state=0)

print(x)
print(y)
print(z)

Producción :

[[ 1  2  3]
 [ 6  7  8]
 [ 9 10 12]]
['one', 'two', 'three']
[4, 5, 6]
[[ 9 10 12]
 [ 6  7  8]
 [ 1  2  3]]
['three', 'two', 'one']
[6, 5, 4]

Artículo relacionado - Python Array