Código de multiplicación de matrices de Python
Realice multiplicaciones de matrices en Python puro sin dependencias. Ejecute nuestra comparación de bucles anidados versus estructuras optimizadas.
Descripción general
La multiplicación de matrices es una operación matemática fundamental en álgebra lineal, gráficos por computadora y aprendizaje automático. Implica tomar dos matrices y producir una tercera calculando productos escalares de filas y columnas.
Para multiplicar la matriz A por la matriz B, el número de columnas de A debe ser igual al número de filas de B. La matriz resultante tiene las dimensiones de las filas de A y las columnas de B.
En Python puro, la multiplicación de matrices se implementa mediante tres bucles anidados. Si bien es fácil de escribir, esta operación O(n³) es lenta, razón por la cual los científicos de datos utilizan motores de biblioteca especializados comoNumPyen producción.
Código y salida de ejecución
Multiplicación de matrices pura de Python utilizando bucles anidados y comprensión de listas.
def multiply_matrices(A, B):
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
if cols_A != rows_B:
raise ValueError("Cannot multiply: column size of A must match row size of B.")
# Initialize result matrix with zeros
result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]
# Iterate through rows of A
for i in range(rows_A):
# Iterate through columns of B
for j in range(cols_B):
# Iterate through rows of B (or columns of A)
for k in range(cols_A):
result[i][j] += A[i][k] * B[k][j]
return result
# 2x3 Matrix A
matrix_A = [
[1, 2, 3],
[4, 5, 6]
]
# 3x2 Matrix B
matrix_B = [
[7, 8],
[9, 10],
[11, 12]
]
print("Matrix A (2x3):", matrix_A)
print("Matrix B (3x2):", matrix_B)
res = multiply_matrices(matrix_A, matrix_B)
print("Product (2x2):", res)Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]Implementación paso a paso
- Representación de gráficos matemáticos y rotaciones de coordenadas.
- Productos escalables de capa de red neuronal artificial simple
- Comprender las estructuras algorítmicas y los bucles anidados
Preguntas frecuentes
¿Por quéNumPyrealiza la multiplicación de matrices mucho más rápido?
NumPyestá escrito en C y utiliza bibliotecas BLAS/LAPACK altamente optimizadas. Aprovecha la vectorización, las optimizaciones de la caché de la CPU y la ejecución paralela, algo que los bucles estándar de Python no pueden hacer.
¿Qué es el operador `@` en Python?
A partir dePython 3.5, el símbolo `@` se introdujo como un operador infijo dedicado para la multiplicación de matrices, lo que le permite ejecutar `A @ B` cuando se utilizan matrices numerosas.