Operaciones con matrices en Python con NumPy: Transpuesta, adición, multiplicación y slicing – Guía práctica
Operaciones con matrices en Python con NumPy: Transpuesta, adición, multiplicación y slicing
El modelado matemático, computación científica y análisis de datos a menudo dependen de la manipulación eficiente de datos bidimensionales. En Python, las matrices pueden crearse con listas simples o, más poderosamente, con la librería NumPy. Esta guía recorre las operaciones de matrices más comunes, con ejemplos de código claros y consejos de mejores prácticas.
¿Qué es una matriz?
Una matriz es un array rectangular de números (u otros tipos de datos) organizados en filas y columnas. Aunque Python carece de un tipo matriz dedicado en su lenguaje central, puedes representar una con listas anidadas o con ndarray de NumPy, que ofrece operaciones vectorizadas rápidas.
Crear una matriz con listas anidadas
Las listas anidadas son la forma más simple de construir una matriz. Cada lista interna representa una fila:
# Matriz 3x3
M1 = [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
print(M1)
Salida:
[[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
Lectura de datos
Accede a elementos vía índices de fila y columna. Para imprimir el último elemento de cada fila:
for fila in M1:
print(fila[-1])
Salida:
-6 4 21
Adición de matrices
Cuando ambas matrices comparten la misma forma, la adición elemento a elemento es directa:
M2 = [[3, 16, -6], [9, 7, -4], [-1, 3, 13]]
# Matriz resultado
M3 = [[M1[i][j] + M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Salida:
[[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
Multiplicación elemento a elemento
Similarmente, puedes multiplicar elementos correspondientes:
M3 = [[M1[i][j] * M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Salida:
[[24, 224, 36], [108, 49, -16], [11, 9, 273]]
Usando NumPy para operaciones de matrices eficientes
NumPy proporciona un tipo de array dedicado y una gran cantidad de operaciones vectorizadas. Instálalo con pip install numpy e impórtalo como np:
import numpy as np
Crear una matriz
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)
Salida:
[[ 5 -10 15] [ 3 -6 9] [-4 8 12]]
Operaciones básicas
- Adición:
M3 = M1 + M2 - Sustracción:
M3 = M1 - M2 - Producto punto (multiplicación de matrices):
M3 = M1.dot(M2) - Transpuesta:
M2 = M1.transpose()
Ejemplo: Producto punto de matrices
M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
print(M1.dot(M2))
Salida:
[[ 93 78] [-65 -310]]
Slicing (rebanado)
Rebana filas y columnas con array[inicio_fila:fin_fila, inicio_col:fin_col]:
M = np.array([[2, 4, 6, 8, 10],
[3, 6, 9, -12, -15],
[4, 8, 12, 16, -20],
[5, -10, 15, -20, 25]])
print(M[1:3, 1:4]) # filas 1-2, columnas 1-3
print(M[:, 3]) # todas las filas, 4ta columna
print(M[:1, :]) # primera fila, todas las columnas
print(M[:3, :2]) # primeras 3 filas, primeras 2 columnas
Salida:
[[ 6 9 -12] [ 8 12 16]] [ 8 -12 16 -20] [[ 2 4 6 8 10]] [[ 2 4] [ 3 6] [ 4 8]]
Acceso a filas y columnas
# Filas
print(M[0]) # primera fila
print(M[-1]) # última fila
# Columnas
print(M[:, 0]) # primera columna
print(M[:, -1]) # última columna
Conclusiones clave
- Las listas de listas de Python son adecuadas para matrices pequeñas, pero
ndarrayde NumPy escala mucho mejor. - Operaciones elemento a elemento (+, -, *, /) funcionan directamente en arrays de NumPy.
- Para verdadera multiplicación de matrices, usa
np.dot()o el operador@. - El slicing ofrece formas potentes de extraer sub-matrices o filas/columnas específicas.
- Asegúrate siempre que las matrices tengan formas compatibles antes de realizar operaciones.
python
- Arrays en C++: Declaración, inicialización y técnicas con punteros
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Función print() en Python: Guía Práctica con Ejemplos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
- Función abs() en Python: calcular valores absolutos para números y complejos
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función range() de Python: desde lo básico a casos avanzados
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas