0Pricing
Pandas & NumPy Academy · Aula

Funções universais (ufuncs)

Aplique a vetores funções integradas elemento a elemento, como np.sqrt, np.abs, np.exp e np.log, sem escrever laços.

Funções universais (ufuncs) é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 1 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 Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

O que são ufuncs?

Funções universais (ufuncs) executam uma operação matemática em cada elemento de uma matriz de uma só vez, em C compilado e rápido — muito mais depressa que um laço do Python. ⚡

import numpy as np

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))  # [1. 2. 3. 4.]
# Equivalent Python loop would be hundreds of times slower

ufuncs matemáticas: sqrt, exp, log

Todas as suas funções matemáticas favoritas são ufuncs: np.sqrt, np.exp, np.log e outras. Elas se aplicam a matrizes inteiras de uma só vez e tratam casos extremos com eficiência.

import numpy as np

a = np.array([0.0, 1.0, 2.0, 3.0])
print(np.exp(a))         # [1.    2.718 7.389 20.086]
print(np.log(np.exp(a))) # [0. 1. 2. 3.]
print(np.log2(np.array([1, 2, 4, 8])))  # [0. 1. 2. 3.]

ufuncs trigonométricas

As ufuncs trigonométricas do NumPy, como np.sin e np.cos, esperam ângulos em radianos. Use np.deg2rad para converter graus primeiro.

import numpy as np

angles = np.array([0, 30, 60, 90])
rad = np.deg2rad(angles)
print(np.sin(rad).round(4))  # [0.     0.5    0.866  1.   ]
print(np.cos(rad).round(4))  # [1.     0.866  0.5    0.   ]

np.abs, np.floor, np.ceil, np.round

Para arredondar, use np.floor (para baixo), np.ceil (para cima) e np.round (para o mais próximo). Elas ajustam os valores de ponto flutuante de toda a matriz de uma só vez.

import numpy as np

a = np.array([-2.7, 0.4, 1.5, 3.9])
print(np.abs(a))     # [2.7 0.4 1.5 3.9]
print(np.floor(a))   # [-3.  0.  1.  3.]
print(np.ceil(a))    # [-2.  1.  2.  4.]
print(np.round(a))   # [-3.  0.  2.  4.]

np.maximum e np.minimum

np.maximum(a, b) obtém o maior valor em cada posição de duas matrizes — diferente de np.max, que retorna um único número. np.maximum(a, 0) é ReLU!

import numpy as np

a = np.array([-3, 1, 5, -2, 4])
b = np.array([0, 0, 3, 3, 3])

print(np.maximum(a, b))  # [0 1 5 3 4]
print(np.minimum(a, b))  # [-3  0  3 -2  3]

# ReLU
print(np.maximum(a, 0))  # [0 1 5 0 4]

np.clip para limitar valores

np.clip mantém cada elemento dentro de um intervalo: qualquer valor baixo demais sobe até o mínimo, e qualquer valor alto demais desce até o máximo. É excelente para limitar valores.

import numpy as np

a = np.array([0.1, 0.5, -0.2, 1.3, 0.9])
clipped = np.clip(a, 0.0, 1.0)
print(clipped)  # [0.1 0.5 0.  1.  0.9]

ufuncs em matrizes multidimensionais

ufuncs funcionam em matrizes de qualquer forma. A operação matemática é aplicada a cada elemento individualmente, e o resultado mantém a mesma forma — não é necessário remodelar a matriz.

import numpy as np

m = np.array([[1.0, 4.0], [9.0, 16.0]])
print(np.sqrt(m))
# [[1. 2.]
#  [3. 4.]]

Parâmetro out para eficiência de memória

Toda ufunc aceita um argumento out= para escrever os resultados em uma matriz que você já possui. Isso evita criar uma nova matriz — algo útil em laços intensos e sensíveis ao uso de memória.

import numpy as np

a = np.array([1.0, 4.0, 9.0])
result = np.empty(3)
np.sqrt(a, out=result)  # write directly into result
print(result)  # [1. 2. 3.]

np.add.reduce e .accumulate

Cada ufunc tem um método .reduce() que combina todos os elementos (np.add.reduce é simplesmente uma soma) e .accumulate() para calcular totais acumulados.

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(np.add.reduce(a))       # 15
print(np.add.accumulate(a))   # [ 1  3  6 10 15]
print(np.multiply.reduce(a))  # 120

np.frompyfunc para ufuncs personalizadas

np.frompyfunc transforma qualquer função Python em uma ufunc que você pode aplicar a matrizes. Ela é mais lenta que as funções integradas, portanto reserve-a para protótipos rápidos.

import numpy as np

def clamp_positive(x):
    return x if x > 0 else 0.0

vfunc = np.frompyfunc(clamp_positive, 1, 1)
a = np.array([-2, 3, -1, 5])
print(vfunc(a))  # [0.0 3 0.0 5]  (object dtype)

Comparando ufuncs com laços do Python

A diferença de velocidade é enorme: com um milhão de elementos, uma ufunc pode ser cerca de 200 vezes mais rápida que um laço do Python. Em cálculos numéricos, use sempre as ufuncs primeiro. 🚀

import numpy as np
import time

a = np.random.rand(1_000_000)

start = time.perf_counter()
np.sqrt(a)
print('ufunc:', round(time.perf_counter() - start, 4), 's')

start = time.perf_counter()
[x ** 0.5 for x in a]
print('loop:', round(time.perf_counter() - start, 4), 's')

Verificação rápida

Teste sua compreensão sobre as ufuncs do NumPy nesta lição.

Recapitulação da lição

Muito bem! As ufuncs fazem cálculos elemento a elemento em C rápido, abrangem sqrt, exp, log e funções trigonométricas, e o argumento out= economiza memória. A seguir: funções de agregação.

Perguntas Frequentes

A aula “Funções universais (ufuncs)” é grátis?

Sim — o texto completo de “Funções universais (ufuncs)” é 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 Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

O que vou aprender em “Funções universais (ufuncs)”?

Aplique a vetores funções integradas elemento a elemento, como np.sqrt, np.abs, np.exp e np.log, sem escrever laços. Você pratica Pandas & NumPy 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 Pandas & NumPy Academy?

Nenhuma experiência prévia é necessária. Pandas & NumPy 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 1 de 4.

Quanto tempo leva a aula “Funções universais (ufuncs)”?

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 Pandas & NumPy Academy?

Sim. Cada aula de Pandas & NumPy 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

  1. Funções universais (ufuncs)
  2. Funções de agregação
  3. Regras de transmissão
  4. Mascaramento booleano e indexação avançada
← Voltar para Pandas & NumPy Academy