Operações com arrays e broadcasting
Realize operações aritméticas vetorizadas e entenda as regras de broadcasting.
Operações com arrays e broadcasting é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Aritmética vetorizada
O NumPy aplica operações aritméticas elemento a elemento em arrays inteiros, sem loops de Python — a execução ocorre em código C otimizado.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]Funções universais (ufuncs)
As ufuncs do NumPy aplicam funções em C elemento a elemento: np.sqrt, np.exp, np.log, np.sin etc.
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]Operações de redução
Reduza um array a um escalar (ou a um array de dimensão menor) com np.sum, np.mean, np.max, np.min, np.std.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each rowRegras de broadcasting
O broadcasting expande arrays menores para corresponder aos maiores — sem copiar os dados. Regra: as dimensões são alinhadas da direita para a esquerda; dimensões de tamanho 1 são expandidas.
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]Operações escalares com broadcasting
Um escalar é expandido para todos os elementos do array.
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]Operações de comparação e booleanas
As comparações produzem arrays booleanos. Combine-os com &, |, ~ (não com and/or/not do Python).
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
np.where(condition, x, y) retorna elementos de x quando o valor é True e de y quando é False.
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]Agregações ao longo dos eixos
Especifique axis= para reduzir ao longo de uma dimensão específica de um array multidimensional.
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum e diff
np.cumsum calcula somas cumulativas; np.diff calcula as diferenças entre elementos consecutivos.
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)Operações vetorizadas com strings
np.char fornece operações vetorizadas com strings em arrays de strings.
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]Desempenho versus listas do Python
O NumPy é de 10 a 100 vezes mais rápido do que loops equivalentes do Python em tarefas numéricas, pois executa em C sem a sobrecarga do interpretador Python.
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")Verificação rápida
Ao somar um array de forma (3,1) a um array de forma (3,), qual será a forma do resultado?
Recapitulação
As operações do NumPy são executadas elemento a elemento em C (sem loops de Python). O broadcasting expande formas compatíveis sem copiar os dados. Use axis= para reduções ao longo de dimensões específicas. As ufuncs (np.sin, np.exp etc.) aplicam operações elemento a elemento na velocidade de C.
Perguntas Frequentes
A aula “Operações com arrays e broadcasting” é grátis?
Sim — o texto completo de “Operações com arrays e broadcasting” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Operações com arrays e broadcasting”?
Realize operações aritméticas vetorizadas e entenda as regras de broadcasting. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Operações com arrays e broadcasting”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Arrays NumPy e dtypes
- Operações com arrays e broadcasting
- Indexação, fatiamento e indexação avançada
- Álgebra linear com NumPy