English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico Python

Controle de fluxo Python

Funções do Python

Tipos de Dados do Python

Operação de arquivo Python

Objetos e classes Python

Data e hora Python

Conhecimento avançado Python

Manual de referência Python

Programa Python multiplica duas matrizes

大全 do Python

Neste exemplo, vamos aprender a multiplicar matrizes de duas maneiras diferentes: laços aninhados e compreensão de listas aninhadas

Para entender este exemplo, você deve entender o seguinteProgramação PythonTema:

Em Python, podemos implementar a matriz como uma lista aninhada (listas dentro de listas).

Podemos considerar cada elemento como uma linha da matriz.

Por exemplo, X = [[1, 2], [4, 5], [3, 6]] representa um3x2Matriz.

A primeira linha pode ser escolhida como X[0]. Além disso, o elemento da primeira linha e primeira coluna pode ser escolhido como X[0][0].

A multiplicação de duas matrizes X e Y é definida apenas quando o número de colunas de X é igual ao número de linhas de Y.

Se X for uma matriz n x m e Y for uma matriz m x l, então XY é definido, com dimensões n x l (mas YX não está definido). Abaixo estão algumas maneiras de implementar a multiplicação de matrizes em Python.

Código Fonte: Multiplicação de matrizes usando loops aninhados

# Programar multiplicação de matrizes usando loops aninhados
# 3x3 matriz
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# 3x4 Matriz
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# Resultado 3x4
result = [[0,0,0,0],
         [0,0,0,0],
         [0,0,0,0]]
# Percorrer linhas de X
for i in range(len(X)):
   # Percorrer colunas de Y
   for j in range(len(Y[0])):
       # Percorrer linhas de Y
       for k in range(len(Y)):
           result[i][j] += X[i][k] * Y[k][j]
for r in result:
   print(r)

Resultado de Saída

[114, 160, 60, 27]]
[74, 97, 73, 14]]
[119, 157, 112, 23]]

Neste programa, usamos loops aninhados para percorrer cada linha e coluna. Somamos os produtos no resultado.

Essa técnica é simples, mas à medida que aumentamos o grau da matriz, a quantidade de cálculo é grande.

Para operações de matrizes maiores, recomendamos usar pacotes otimizados, comoNumPy,ela é várias vezes mais rápida que o código acima (aproximadamente1000 vezes).

Código Fonte: Multiplicação de matrizes usando compreensão de lista

# Programar multiplicação de matrizes usando compreensão de lista
# 3x3 Matriz
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# 3x4 Matriz
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# Resultado 3x4
result = [[sum(a*b for a, b in zip(X_row, Y_col)) for Y_col in zip(*Y) for X_row in X]
for r in result:
   print(r)

A saída deste programa é a mesma que a acima. Para entender o código acima, devemos primeiro entender a função integrada zip() e usar*Descomprimir parâmetros de operador.

Usamos listas aninhadas para percorrer cada elemento da matriz. O código parece complexo e difícil de ler no início. Mas uma vez que você dominar a técnica de compreensão de listas, talvez você não queira usar loops aninhados.

大全 do Python