NumPy: Funções Matemáticas
Última atualização: 2026-08-26
1. O que Você Aprenderá
- ❶ Funções trigonométricas: sin, cos, tan, arcsin, arccos, arctan2
- ❷ Exponenciais e logaritmos: exp, log, log2, log10
- ❸ Arredondamento: floor, ceil, round, trunc, rint
- ❹ Funções especiais: sqrt, square, sign, abs, clip
2. Conceitos-Chave
import numpy as np
# Trigonométricas
angles = np.array([0, np.pi/4, np.pi/2])
print(np.sin(angles)) # [0. 0.707 1.]
print(np.cos(angles)) # [1. 0.707 0.]
print(np.tan(angles)) # [0. 1. inf]
# arctan2: computação segura de ângulos
print(np.arctan2(1, 1)) # 0.785 (pi/4)
# Exponenciais e logaritmos
print(np.exp([0, 1, 2])) # [1. 2.718 7.389]
print(np.log([1, 10, 100])) # [0. 2.303 4.605]
print(np.log10([1, 10, 100])) # [0. 1. 2.]
# Arredondamento
a = np.array([1.2, 1.7, -1.2, -1.7])
print(np.floor(a)) # [1. 1. -2. -2.]
print(np.ceil(a)) # [2. 2. -1. -1.]
print(np.round(a)) # [1. 2. -1. -2.]
print(np.trunc(a)) # [1. 1. -1. -1.]
# Clipping
data = np.array([1, 5, 10, 15, 20])
print(np.clip(data, 5, 15)) # [5 5 10 15 15]
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
▶ Exemplo: Funções trigonométricas (Dificuldade ⭐)
import numpy as np
angles = np.array([0, np.pi/6, np.pi/4, np.pi/3, np.pi/2])
print("Ângulos:", angles)
print("sin:", np.sin(angles).round(4))
print("cos:", np.cos(angles).round(4))
print("tan:", np.tan(angles).round(4))
# Trigonométricas inversas
print("arcsin(0.5):", np.arcsin(0.5))
print("arccos(0.5):", np.arccos(0.5))
Output:
TEXT 📖 Somente leituraÂngulos: [0. 0.52359878 0.78539816 1.04719755 1.57079633] sin: [0. 0.5 0.7071 0.866 1. ] cos: [1. 0.866 0.7071 0.5 0. ] tan: [0. 0.5774 1. 1.7321 inf] arcsin(0.5): 0.5235987755982989 arccos(0.5): 1.0471975511965979
▶ Exemplo: Funções exponenciais e logarítmicas (Dificuldade ⭐⭐)
import numpy as np
x = np.array([1, 2, 3, 4, 5])
print("exp:", np.exp(x).round(2))
print("log:", np.log(x).round(2))
print("log2:", np.log2(x).round(2))
print("log10:", np.log10(x).round(2))
# Verificação: exp(log(x)) ≈ x
restored = np.exp(np.log(x))
print("exp(log(x)):", restored.round(6))
print("Corresponde:", np.allclose(x, restored))
Output:
TEXT 📖 Somente leituraexp: [ 2.72 7.39 20.09 54.6 148.41] log: [0. 0.69 1.1 1.39 1.61] log2: [0. 1. 1.58 2. 2.32] log10: [0. 0.3 0.48 0.6 0.7 ] exp(log(x)): [1. 2. 3. 4. 5.] Corresponde: True
▶ Exemplo: Arredondamento e clipping (Dificuldade ⭐)
import numpy as np
a = np.array([1.2, 1.7, -1.2, -1.7, 2.5, -2.5])
print("floor:", np.floor(a))
print("ceil:", np.ceil(a))
print("trunc:", np.trunc(a))
print("round:", np.round(a))
# Clipping
data = np.array([-10, 5, 15, 20, 100, -5])
clipped = np.clip(data, 0, 50)
print("Original:", data)
print("Recortado [0, 50]:", clipped)
Output:
TEXT 📖 Somente leiturafloor: [ 1. 1. -2. -2. 2. -3.] ceil: [ 2. 2. -1. -1. 3. -2.] trunc: [ 1. 1. -1. -1. 2. -2.] round: [ 1. 2. -1. -2. 2. -2.] Original: [-10 5 15 20 100 -5] Recortado [0, 50]: [ 0 5 15 20 50 0]
P: Funções matemáticas do NumPy são mais rápidas que o módulo math do Python? R: Sim — para arrays, o NumPy é vetorizado (nível C). Para valores individuais, o módulo math do Python é ligeiramente mais rápido. Use NumPy para arrays, math do Python para escalares.
P: Qual é a diferença entre np.round e np.around? R: São idênticos —
np.aroundé um alias paranp.round. Ambos arredondam para o inteiro mais próximo (ou casas decimais especificadas).
P: Para que serve np.clip? R: Clipping limita valores a um intervalo — útil para remover outliers, limitar valores de pixels ou garantir estabilidade numérica.
❓ Perguntas Frequentes
P: O que é a coisa mais importante a lembrar? R: As operações do NumPy são vetorizadas — evite loops Python para melhor desempenho.
P: Onde posso aprender mais? R: Consulte a documentação oficial do NumPy em numpy.org para referências detalhadas e tópicos avançados.
P: Isso funciona com o NumPy 2.x? R: Sim — todos os exemplos são compatíveis com o NumPy 2.x. Algumas APIs mais antigas (como np.random.seed) ainda são suportadas, mas as alternativas modernas são recomendadas.
📖 Resumo
- Trigonométricas: sin, cos, tan, arcsin, arccos, arctan, arctan2
- Exp/log: exp, log, log2, log10, expm1, log1p
- Arredondamento: floor, ceil, round, trunc, rint
- Clip:
np.clip(data, min, max)— limita a um intervalo - Todas as funções são vetorizadas e compatíveis com NumPy
📝 Exercícios
-
Básico (Dificuldade ⭐): Crie um array de ângulos de 0 a 2π em intervalos de π/4. Compute sin, cos e tan para cada um.
-
Intermediário (Dificuldade ⭐⭐): Crie um array de 100 valores entre 0.1 e 10. Compute log10, ln e exp para cada um. Verifique que exp(log(x)) ≈ x.
-
Desafio (Dificuldade ⭐⭐⭐): Use
np.clippara remover outliers de um dataset — substitua valores abaixo do percentil 5 pelo valor do percentil 5, e valores acima do percentil 95 pelo valor do percentil 95.