
Hoje nós iremos aprender a lidar com operações matriciais no Python. No artigo anterior, nos preparamos para esse momento conhecendo algumas funcionalidades úteis da biblioteca numpy. Nesse artigo, iremos dar prosseguimento nesse assunto e aprender operações matriciais básicas com python.
Em sumo, iremos conhecer as seguintes operações matriciais:
- Soma, subtração e multiplicação por escalar de matrizes
- Transposição de matrizes
- Determinante de matrizes
- Multiplicação de matrizes
- Inversa de matrizes
Para exemplificarmos essas operações, vamos usar a biblioteca numpy e definir duas matrizes de exemplo.
#%% Importando biblioteca e criando matrizes teste
import numpy as np
#definindo matrizes exemplo
a = np.array([[1,3,5],[5,4,6],[5,8,9]])
b = np.array([[4,8,6],[7,8,9],[10,15,16]])
print(f'Matriz A:\n{a}')
print(f'MatrizB:\n{b}')
'''Out:
Matriz A:
[[1 3 5]
[5 4 6]
[5 8 9]]
MatrizB:
[[ 4 8 6]
[ 7 8 9]
[10 15 16]]
'''
Matrizes em python: Soma, subtração e multiplicação por escalar de matrizes
Realizar essas operações com o numpy é uma tarefa bastante simples, e já vimos como fazer isso no guia de numpy para IA.
#%% Soma, subtraçao e multiplicaçao por escalar
#soma
print(a+b)
'''Out:
[[ 5 11 11]
[12 12 15]
[15 23 25]]
'''
#subtraçao
print(a-b)
'''Out:
[[-3 -5 -1]
[-2 -4 -3]
[-5 -7 -7]]
'''
#multiplicaçao por escalar (Tambem vale para divisao por escalar usando "/")
print(a*5)
'''Out:
[[ 5 15 25]
[25 20 30]
[25 40 45]]
'''
Matrizes em python: Transposição de matrizes
Transpor matrizes nada mais é do que pegar as linhas de uma matriz e colocar como colunas.
#Transposiçao de matrizes
print(a.T)
'''Out:
[[1 5 5]
[3 4 8]
[5 6 9]]
'''
Matrizes em python: Determinante de matrizes
Realizar o cálculo de determinante de matrizes também é uma tarefa bem simples. Lembrando que o cálculo de determinante requer uma matriz quadrada, isto é, uma matriz com o número de linhas igual ao número de colunas.
#Determinante de matrizes
print(np.linalg.det(a))
'''Out:
42.99999999999998
'''
Matrizes em python: Multiplicação de matrizes
A multiplicação de matrizes é confusa quando feita à mão, mas bem simples no python. Vale lembrar que, diferente da multiplicação de números, a ordem da multiplicação de matrizes importa.
Isso significa que multiplicar uma matriz A por uma matriz B é diferente do contrário. Na verdade, em alguns casos não é possível fazer o produto da matriz B por A.
O motivo disso é que a multiplicação de matrizes é possível quando o número de colunas da primeira matriz deve ser igual ao número de linhas da segunda matriz.
#multiplicaçao de matrizes
print(a.dot(b))
'''Out:
[[ 75 107 113]
[108 162 162]
[166 239 246]]
'''
Matrizes em python: Inversa de matrizes
A inversa de uma matriz A é a matriz A-1. Essa matriz inversa é especial pois quando multiplicamos A*A-1 , o resultado é a matriz identidade, que é a matriz que tem sua diagonal principal preenchida com 1’s e os demais elementos preenchidos com 0. Vale lembrar que somente matrizes quadradas podem ter inversa.
print(np.linalg.inv(a))
'''Out:
[[-0.27906977 0.30232558 -0.04651163]
[-0.34883721 -0.37209302 0.44186047]
[ 0.46511628 0.1627907 -0.25581395]]
'''
Vale lembrar que algumas matrizes quadradas simplesmente não admitem inversa. Nesses casos, podemos calcular uma “inversa aproximada”, chamada pseudo-inversa de Moore-Penrose.
print(np.linalg.pinv(a))
'''Out:
[[-0.27906977 0.30232558 -0.04651163]
[-0.34883721 -0.37209302 0.44186047]
[ 0.46511628 0.1627907 -0.25581395]]
'''
Conclusão
Nesse artigo conhecemos algumas operações matriciais muito importantes. Se você ficou com alguma dúvida teórica de matrizes, pode consultar um artigo da wikipédia sobre matrizes e suas propriedades. Até a próxima!