Las matrices, o arreglos bidimensionales, son estructuras de datos fundamentales en programación, especialmente cruciales para tareas como procesamiento de imágenes, álgebra lineal y desarrollo de juegos. Si bien Python no tiene un tipo de matriz 2D integrado como algunos lenguajes (por ejemplo, C++), ofrece varias maneras eficientes y elegantes de crearlas y manipularlas. Este artículo explora tres enfoques populares: comprensión de listas, bucles anidados y la poderosa biblioteca NumPy.
Tabla de Contenido
Método de Comprensión de Listas
La comprensión de listas ofrece una forma concisa y «pythonica» de crear matrices 2D, particularmente beneficiosa al inicializar con valores generados a partir de fórmulas o patrones. Utiliza comprensiones de listas anidadas, donde el bucle externo maneja las filas y el interno las columnas.
# Matriz 3x4 llena de ceros
rows = 3
cols = 4
array_2d = [[0 for _ in range(cols)] for _ in range(rows)]
print(array_2d) # Salida: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
# Matriz 3x3 con valores basados en los índices de fila y columna
array_2d = [[i + j for j in range(3)] for i in range(3)]
print(array_2d) # Salida: [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
# Matriz 2x2 con números aleatorios (requiere importar random)
import random
array_2d = [[random.randint(1,10) for _ in range(2)] for _ in range(2)]
print(array_2d) # Salida: (Ejemplo) [[7, 2], [9, 5]]
Método de Bucles Anidados
Este enfoque utiliza bucles for
anidados con range
, iterando a través de filas y columnas para construir el arreglo elemento por elemento. Es más verboso que la comprensión de listas, pero puede ser más fácil de entender para principiantes.
rows = 3
cols = 4
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(0) # O cualquier otro valor de inicialización
array_2d.append(row)
print(array_2d) # Salida: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
rows = 3
cols = 3
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(i*cols + j) #Ejemplo llenando con números secuenciales
array_2d.append(row)
print(array_2d) # Salida: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Arreglos NumPy
NumPy es una poderosa biblioteca para computación numérica en Python. Su función numpy.array()
proporciona una creación y manipulación eficientes de arreglos multidimensionales. Los arreglos NumPy ofrecen un rendimiento significativamente más rápido que las listas de Python para operaciones numéricas.
import numpy as np
# Matriz 3x4 llena de ceros
array_2d = np.zeros((3, 4))
print(array_2d)
# Matriz 3x3 llena de unos
array_2d = np.ones((3, 3))
print(array_2d)
# Matriz 2x2 llena con un valor específico
array_2d = np.full((2, 2), 7)
print(array_2d)
# Matriz identidad 3x3
array_2d = np.eye(3)
print(array_2d)
# Matriz 2x3 con números aleatorios entre 0 y 1
array_2d = np.random.rand(2, 3)
print(array_2d)
# Matriz 2x2 con enteros aleatorios entre 1 y 10
array_2d = np.random.randint(1, 11, size=(2,2))
print(array_2d)
NumPy ofrece varias funciones para inicializar arreglos con diversos valores y patrones, lo que lo convierte en la opción preferida para cálculos numéricos que involucran matrices 2D. Recuerda importar numpy as np
antes de usar estas funciones.