Operações de Matriz em Python com NumPy: Transposta, Adição, Multiplicação e Fatiamento – Guia Prático
Operações de Matriz em Python com NumPy: Transposta, Adição, Multiplicação e Fatiamento
Modelagem matemática, computação científica e análise de dados frequentemente dependem de manipulação eficiente de dados bidimensionais. Em Python, matrizes podem ser criadas com listas simples ou, mais poderosamente, com a biblioteca NumPy. Este guia percorre as operações de matriz mais comuns, com exemplos de código claros e dicas de boas práticas.
O que é uma Matriz?
Uma matriz é um arranjo retangular de números (ou outros tipos de dados) organizados em linhas e colunas. Embora Python não tenha tipo matriz dedicado na linguagem core, você pode representar uma com listas aninhadas ou com ndarray do NumPy, que oferece operações vetorizadas rápidas.
Criando Matriz com Listas Aninhadas
Listas aninhadas são a forma mais simples de construir matriz. Cada lista interna representa uma linha:
# Matriz 3x3
M1 = [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
print(M1)
Saída: [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
Lendo Dados
Acesse elementos via índices de linha e coluna. Para imprimir último elemento de cada linha:
for linha in M1:
print(linha[-1])
Saída: -6, 4, 21
Adicionando Matrizes
Quando ambas matrizes compartilham mesma forma, adição elemento a elemento é direta:
M2 = [[3, 16, -6], [9, 7, -4], [-1, 3, 13]]
# Matriz resultado
M3 = [[M1[i][j] + M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Saída: [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
Multiplicação Elemento a Elemento
Similarmente, você pode multiplicar elementos correspondentes:
M3 = [[M1[i][j] * M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Saída: [[24, 224, 36], [108, 49, -16], [11, 9, 273]]
Usando NumPy para Operações de Matriz Eficientes
NumPy fornece tipo array dedicado e riqueza de operações vetorizadas. Instale com pip install numpy e importe como np:
import numpy as np
Criando Matriz
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)
Saída:
[[ 5 -10 15] [ 3 -6 9] [ -4 8 12]]
Operações Básicas
- Adição:
M3 = M1 + M2 - Subtração:
M3 = M1 - M2 - Produto Escalar (multiplicação de matriz):
M3 = M1.dot(M2) - Transposta:
M2 = M1.transpose()
Exemplo: Produto Escalar de Matriz
M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
print(M1.dot(M2))
Saída:
[[ 93 78] [-65 -310]]
Fatiamento (Slicing)
Fatie linhas e colunas com array[inicio_linha:fim_linha, inicio_col:fim_col]:
M = np.array([[2, 4, 6, 8, 10],
[3, 6, 9, -12, -15],
[4, 8, 12, 16, -20],
[5, -10, 15, -20, 25]])
print(M[1:3, 1:4]) # linhas 1-2, colunas 1-3
print(M[:, 3]) # todas linhas, 4ª coluna
print(M[:1, :]) # primeira linha, todas colunas
print(M[:3, :2]) # primeiras 3 linhas, primeiras 2 colunas
Saída:
[[ 6 9 -12] [ 8 12 16]] [ 8 -12 16 -20] [[ 2 4 6 8 10]] [[ 2 4] [ 3 6] [ 4 8]]
Acessando Linhas e Colunas
# Linhas
print(M[0]) # primeira linha
print(M[-1]) # última linha
# Colunas
print(M[:, 0]) # primeira coluna
print(M[:, -1]) # última coluna
Principais Conclusões
- Listas de listas do Python são adequadas para matrizes pequenas, mas
ndarraydo NumPy escala muito melhor. - Operações elemento a elemento (+, -, *, /) funcionam diretamente em arrays NumPy.
- Para multiplicação de matriz verdadeira, use
np.dot()ou operador@. - Fatiamento oferece formas poderosas de extrair sub-matrizes ou linhas/colunas específicas.
- Sempre garanta que matrizes tenham formas compatíveis antes de realizar operações.
python
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Arrays em C++ Desmistificados: Declaração, Inicialização e Técnicas com Ponteiros
- Função Print() do Python: Guia Prático com Exemplos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Domine Strings format() em Python com Exemplos Claros
- Domine o Método String.find() do Python: Sintaxe, Exemplos e Alternativas
- Dominando Funções Lambda em Python: Exemplos Práticos e Boas Práticas
- Função abs() em Python: Calcular Valores Absolutos para Números e Complexos
- Função round() em Python Explicada com Exemplos Práticos
- Dominando a Função range() do Python: Do Básico ao Avançado