Permutaciones Aleatorias en NumPy

Las permutaciones aleatorias son una técnica útil en estadísticas, aprendizaje automático y muchas otras aplicaciones. En esta lección, exploraremos cómo realizar permutaciones aleatorias en NumPy , incluyendo la mezcla de elementos, la reordenación de matrices y la generación de permutaciones de matrices. A lo largo de esta lección, veremos ejemplos prácticos para comprender mejor estas operaciones.


Permutaciones Aleatorias de Elementos en NumPy

Creación de un Arreglo y Mezcla de Sus Elementos

En NumPy, podemos crear un arreglo de elementos y luego mezclar sus elementos para obtener una permutación aleatoria. Aquí hay un ejemplo:

Ejemplo

    import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr)
print(arr * 2)
  

En este ejemplo, creamos un arreglo con números del 1 al 10 utilizando np.arange y luego usamos np.random.shuffle para mezclar aleatoriamente los elementos del arreglo.

Utilización de la Función shuffle

La función shuffle de NumPy se utiliza para permutar los elementos de una secuencia en su lugar (sin devolver una copia). Aquí hay un ejemplo de cómo usarla con una lista:

Ejemplo

    import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr)
print(arr * 2)
  

Mezclar Matrices en NumPy

Mezclar las Filas de una Matriz

En algunos casos, es necesario mezclar las filas de una matriz, por ejemplo, cuando trabajamos con datos y deseamos aleatorizar el orden de las muestras. NumPy proporciona la función shuffle para realizar esto. Aquí hay un ejemplo:

Ejemplo

    import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr)
print(arr * 2)
  

En este ejemplo, np.random.shuffle reorganiza las filas de la matriz de forma aleatoria.

Mezclar las Columnas de una Matriz

Si en lugar de las filas queremos mezclar las columnas de una matriz, podemos transponer la matriz, realizar la mezcla y luego volver a transponerla para restaurar la forma original. Aquí tienes un ejemplo:

Ejemplo

    import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr)
print(arr * 2)
  

En este ejemplo, primero transponemos la matriz, luego mezclamos las filas (que originalmente eran columnas) y finalmente volvemos a transponer la matriz para obtener las columnas permutadas.


Generando Permutaciones de Matrices en NumPy

Creación de una Matriz con Números Secuenciales

A veces, necesitamos generar una permutación de una matriz manteniendo la matriz original intacta. Para hacerlo, primero creamos una matriz con números secuenciales y luego generamos una permutación de esa matriz. Ejemplo:

Ejemplo

    import numpy as np

# Crear una matriz secuencial de 1 a 5
matriz_original = np.array([[1, 2, 3],
                            [4, 5, 6],
                            [7, 8, 9]])

# Crear una matriz secuencial de 1 a 5
# Crear una matriz secuencial de 1 a 5
matriz_secuencial = np.arange(1, 10).reshape(3, 3)
print("Matriz Secuencial:\n", matriz_secuencial)
print("Matriz Secuencial:\n", matriz_secuencial)
  
Abrir en editor

Generación de una Permutación de la Matriz en NumPy

Una vez que tengamos una matriz secuencial, podemos generar una permutación de ella utilizando np.random.permutation . Esto creará una nueva matriz con los mismos valores, pero en un orden aleatorio. Ejemplo:

Ejemplo

    import numpy as np

arr = np.arange(1, 11)
np.random.shuffle(arr)
print("Arreglo mezclado:", arr)
print("Permutación nueva:", np.random.permutation(arr))
  

Uso de Permutaciones para Reorganizar Datos en NumPy

Las permutaciones son útiles para reorganizar datos de manera aleatoria, lo que puede ser útil en aplicaciones como el entrenamiento de modelos de aprendizaje automático, validación cruzada y pruebas estadísticas.

En esta lección, hemos explorado cómo realizar permutaciones aleatorias en NumPy, tanto para elementos individuales como para matrices enteras. También hemos visto cómo crear una matriz secuencial y generar permutaciones de ella para reorganizar datos. Estas técnicas son fundamentales en el procesamiento de datos y el análisis estadístico.

Practica Permutaciones Aleatorias en NumPy en el editor

Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.

Ejercicio: Números aleatorios

En NumPy, podemos crear un arreglo de elementos y luego mezclar sus elementos para obtener una permutación aleatoria. Aquí hay un ejemplo.

Ejemplo

    import numpy as np

arr = np.arange(1, 11)
np.random.shuffle(arr)
print("Arreglo mezclado:", arr)
print("Permutación nueva:", np.random.permutation(arr))
  
Abrir en editor

Ejercicio: Números aleatorios (2)

La función shuffle de NumPy se utiliza para permutar los elementos de una secuencia en su lugar (sin devolver una copia). Aquí hay un ejemplo de cómo usarla con.

Ejemplo

    import numpy as np
print(np.random.permutation(5))
  
Abrir en editor

Ejercicio: Crear un array NumPy

En algunos casos, es necesario mezclar las filas de una matriz, por ejemplo, cuando trabajamos con datos y deseamos aleatorizar el orden de las muestras. NumPy proporciona la funci.

Ejemplo

    import numpy as np
arr = np.array([10, 20, 30, 40])
print(np.random.permutation(arr))
  
Abrir en editor

Ejercicio: Números aleatorios (3)

Si en lugar de las filas queremos mezclar las columnas de una matriz, podemos transponer la matriz, realizar la mezcla y luego volver a transponerla para restaurar la forma origina.

Ejemplo

    import numpy as np
rng = np.random.default_rng(42)
print(rng.permutation([1, 2, 3, 4]))
  
Abrir en editor

Ejercicio: Crear un array NumPy (2)

A veces, necesitamos generar una permutación de una matriz manteniendo la matriz original intacta. Para hacerlo, primero creamos una matriz con números secuenciales y luego generam.

Ejemplo

    import numpy as np

arr = np.array([1, 2, 3, 4])
print(arr)
print(arr * 2)
  
Abrir en editor

Ejercicio: Crear una matriz secuencial de 1 a 5

Una vez que tengamos una matriz secuencial, podemos generar una permutación de ella utilizando np.random.permutation . Esto creará una nueva matriz con los mism.

Ejemplo

    import numpy as np

# Crear una matriz secuencial de 1 a 5
matriz_original = np.array([[1, 2, 3],
                            [4, 5, 6],
                            [7, 8, 9]])

# Crear una matriz secuencial de 1 a 5
# Crear una matriz secuencial de 1 a 5
matriz_secuencial = np.arange(1, 10).reshape(3, 3)
print("Matriz Secuencial:\n", matriz_secuencial)
  
Abrir en editor