Código de multiplicação de matriz Python

Execute a multiplicação de matrizes em Python puro, sem dependências. Execute nossa comparação de loops aninhados versus estruturas otimizadas.

Experimente no Editor

Visão geral

A multiplicação de matrizes é uma operação matemática fundamental em álgebra linear, computação gráfica e aprendizado de máquina. Envolve pegar duas matrizes e produzir uma terceira calculando produtos escalares de linhas e colunas.

Para multiplicar a matriz A pela matriz B, o número de colunas em A deve ser igual ao número de linhas em B. A matriz resultante tem as dimensões das linhas de A e das colunas de B.

Em Python puro, a multiplicação de matrizes é implementada usando três loops aninhados. Embora seja fácil de escrever, essa operação O(n³) é lenta, e é por isso que os cientistas de dados usam mecanismos de biblioteca especializados comoNumPyna produção.

Saída de código e execução

Multiplicação de matrizes Python pura usando loops aninhados e compreensão de lista.

matrix_mult.py
Experimente no Editor
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)
Saída terminal
Matrix A (2x3): [[1, 2, 3], [4, 5, 6]]
Matrix B (3x2): [[7, 8], [9, 10], [11, 12]]
Product (2x2): [[58, 64], [139, 154]]

Implementação passo a passo

  • Renderização de gráficos matemáticos e rotações de coordenadas
  • Produtos escalares de camada de rede neural artificial simples
  • Compreendendo estruturas algorítmicas e loops aninhados

Perguntas frequentes

Por queNumPyrealiza a multiplicação de matrizes muito mais rápido?

NumPyé escrito em C e utiliza bibliotecas BLAS/LAPACK altamente otimizadas. Ele aproveita a vetorização, as otimizações de cache da CPU e a execução paralela, o que os loops padrão do Python não podem fazer.

Qual é o operador `@` em Python?

Começando comPython 3.5, o símbolo `@` foi introduzido como um operador infixo dedicado para multiplicação de matrizes, permitindo que você execute `A @ B` ao usar matrizes numpy.

Tópicos Relacionados