Manipulación de Matrices y Arrays en NumPy: Transponer, Invertir y Aplanar

Clase 8 de 32Curso de Python para Ciencia de Datos

Resumen

Aprender a transponer y transformar matrices, invertir arrays y aplanar arrays multidimensionales son habilidades esenciales para manejar grandes volúmenes de datos y realizar cálculos complejos de manera eficiente. Usando la librería NumPy en Python, estas operaciones no solo son fáciles de implementar sino también altamente optimizadas para trabajar con grandes conjuntos de datos.

Transposición de Matrices

La transposición de una matriz es una operación que intercambia sus filas y columnas, esencial en el álgebra lineal y la manipulación de datos científicos. En NumPy, se puede transponer una matriz usando matrix.T, lo que convierte las filas en columnas y viceversa.

import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
transposed_matrix = matrix.T
print("Matriz original:\n", matrix)
print("Matriz transpuesta:\n", transposed_matrix)

Cambiar la Forma (Reshape) de un Array

La función reshape permite cambiar la forma de un array sin cambiar sus datos. Es importante asegurarse de que el número total de elementos permanezca constante.

Por ejemplo, un array de 12 elementos puede ser remodelado en una matriz de 3x4, 4x3, 2x6, etc., pero no en una matriz de 5x3.

# Crea un array con los números del 1 al 12
array = np.arange(1, 13)  
# Cambia la forma del array a una matriz de 3 filas y 4 columnas
reshaped_array = array.reshape(3, 4)  
print("Array original:", array)
print("Array reshaped a 3x4:\n", reshaped_array)
  • np.arange(1, 13) crea un array unidimensional de 12 elementos.
  • array.reshape(3, 4) reorganiza este array en una matriz de 3 filas y 4 columnas. El número total de elementos (12) debe ser el mismo antes y después del reshaping.

Asegúrate de que el número total de elementos en la nueva forma coincide con el número total de elementos en el array original. De lo contrario, se producirá un ValueError.

¿Cómo se invierte un array en NumPy?

En el procesamiento de señales y en algoritmos de inversión de datos, es muy común invertir un array, lo que implica cambiar el orden de sus elementos de forma que el primer elemento se convierta en el último y viceversa.

# Crea un array con los números del 1 al 5
array = np.array([1, 2, 3, 4, 5])  
# Invierte el array
reversed_array = array[::-1]  
print("Array original:", array)
print("Array invertido:", reversed_array)

array[::-1] Invierte el array utilizando slicing. array[start:stop:step] es la notación general para slicing en Python, donde start es el índice inicial, stop es el índice final (excluido), y step es el tamaño del paso. Al omitir start y stop y usar 1 como step, se obtiene una copia del array en orden inverso.

Siempre debes asegurarte de que los índices start, stop, y step estén configurados correctamente para evitar errores de indexación.

Flattening de Arrays Multidimensionales

El aplanamiento de arrays es el proceso de convertir un array multidimensional en un array unidimensional, es útil en algoritmos que requieren una entrada lineal o para operaciones de agregación. En NumPy, se puede aplanar un array usando flatten().

 # Crea un array 2D
multi_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
# Aplana el array 2D a 1D
flattened_array = multi_array.flatten()  
print("Array multidimensional:\n", multi_array)
print("Array aplanado:", flattened_array)

multi_array.flatten() convierte un array 2D en un array 1D, esencialmente “aplanando” la estructura multidimensional. Esto es útil para algoritmos que requieren una entrada unidimensional o para facilitar operaciones de agregación.

La operación flatten() siempre crea una copia, así que debes asegurarte de que esto es lo que deseas para evitar problemas de memoria.