Menu
CoddyTech

NumPy Cheat Sheet: Folha de Consulta

Última atualização

Criar arrays

Um array guarda valores de um só tipo em uma grade com qualquer número de dimensões.

TarefaCódigo
Importar NumPyimport numpy as np
A partir de uma listanp.array([1, 2, 3])
2D a partir de listas aninhadasnp.array([[1, 2, 3], [4, 5, 6]])
Zeros, uns, um valor fixonp.zeros((2, 3)), np.ones(4), np.full((2, 2), 7)
Intervalo com passo (fim excluído)np.arange(0, 10, 2) # [0 2 4 6 8]
n pontos igualmente espaçados (fim incluído)np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.]
Matriz identidadenp.eye(3)
Mesmo shape de outro arraynp.zeros_like(m), np.ones_like(m)
Escolher o tipo dos elementosnp.array([1, 2, 3], dtype=np.float32)
Grades de coordenadasxx, yy = np.meshgrid(np.arange(3), np.arange(2))

Inspecionar um array

TarefaCódigo
Shape: tamanho de cada dimensãom.shape # (3, 4)
Número de dimensõesm.ndim # 2
Número de elementosm.size # 12
Tipo dos elementosm.dtype # int64
Converter o tipom.astype(np.float64)
Tamanho da primeira dimensãolen(m) # 3
Voltar para lista Pythonm.tolist()
Imprimir menos casas decimaisnp.set_printoptions(precision=3, suppress=True)

Indexar e fatiar

Fatias são views: compartilham memória com o array original. Máscaras e listas de índices devolvem cópias.

TarefaCódigo
Primeiro e último elementoa[0], a[-1]
Fatia start:stop (stop excluído)a[1:4] # [20 30 40]
Um elemento sim, outro não, invertidoa[::2], a[::-1]
Um elemento de um array 2Dm[1, 2] # 6
Uma linha, uma colunam[0], m[:, 1]
Um bloco de linhas e colunasm[:2, 1:3]
Elementos que atendem a uma condiçãoa[a > 25] # [30 40 50]
Combinar condiçõesa[(a > 15) & (a < 45)]
Escolher por lista de posiçõesa[[0, 2, 4]]
Posições que atendem à condiçãonp.flatnonzero(a > 25) # [2 3 4]
Escolher por elementonp.where(a > 25, a, 0)
Copiar antes de alterar uma fatiapart = a[1:3].copy()
Atribuir valores com máscaraa[a > 40] = 0

Contas e broadcasting

Os operadores agem elemento a elemento. O broadcasting estica um escalar, uma linha ou uma coluna até o shape do outro array.

TarefaCódigo
Aritmética elemento a elementox + y, x - y, x * y, x / y, x ** 2
Com um escalarx * 10
Raiz quadrada, exponencial, lognp.sqrt(x), np.exp(x), np.log(x)
Valor absoluto, arredondamentonp.abs(x - 5), np.round(x / 3, 2)
Limitar valores a um intervalonp.clip(x, 2, 8)
Máximo elemento a elementonp.maximum(x, 3)
Produto escalarx @ y # 37.0
Centralizar cada coluna (broadcast de linha)m - m.mean(axis=0)
Escalar cada linha (broadcast de coluna)m / m.sum(axis=1, keepdims=True)
Comparar floats com segurançanp.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y)
Trigonometria e pinp.sin(np.pi / 2) # 1.0

Agregar ao longo de um eixo

axis=0 percorre as linhas para baixo e dá um resultado por coluna. axis=1 percorre as colunas e dá um resultado por linha.

TarefaCódigo
Soma de todos os elementosm.sum() # 21
Um resultado por colunam.sum(axis=0) # [5 7 9]
Um resultado por linham.sum(axis=1) # [ 6 15]
Média e desvio padrãom.mean(), m.std(), m.mean(axis=0)
Mínimo, máximom.min(), m.max(axis=1)
Posição do máximom.argmax(), m.argmax(axis=1)
Mediana e percentisnp.median(m), np.percentile(m, [25, 50, 75])
Soma acumuladanp.cumsum(m, axis=1)
Produto de todos os elementosm.prod() # 720
Algum, todos, contagem(m > 4).any(), (m > 0).all(), np.count_nonzero(m > 2)

Remodelar e combinar

Um reshape mantém os elementos e muda o shape, então o tamanho total precisa continuar o mesmo.

TarefaCódigo
Novo shapea.reshape(2, 3)
Deixar o NumPy calcular um tamanhoa.reshape(3, -1), a.reshape(-1, 1)
Achatar para 1Dm.ravel(), m.flatten()
Transporm.T
Adicionar uma dimensãoa[:, np.newaxis], np.expand_dims(a, axis=0)
Remover dimensões de tamanho 1np.squeeze(np.ones((1, 3, 1)))
Juntar ao longo de um eixo existentenp.concatenate([a, a])
Empilhar linhas ou colunasnp.vstack([m, m]), np.hstack([m, m])
Arrays 1D como colunasnp.column_stack([a, a ** 2])
Empilhar em um novo eixonp.stack([a, a], axis=0) # shape (2, 6)
Dividir em pedaçosnp.split(a, 3), np.array_split(a, 4)
Repetir ou ladrilharnp.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2]

Ordenar, buscar e valores únicos

TarefaCódigo
Cópia ordenadanp.sort(a)
Maiores primeironp.sort(a)[::-1]
Posições que ordenariamnp.argsort(a)
Os três maiores valoresnp.sort(a)[-3:]
Valores únicos e suas contagensvalues, counts = np.unique(a, return_counts=True)
Nomes do NumPy 2 (unique_values pode vir fora de ordem)np.unique_values(a), np.unique_counts(a)
Cada elemento está numa lista?np.isin(a, [1, 9])
Posição de inserção num array ordenadonp.searchsorted([1, 3, 5, 7], 4) # 2
Operações de conjuntonp.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1])
Ordenar linhas por uma colunam[m[:, 1].argsort()]

Números aleatórios

Crie um único Generator com seed e tire tudo dele, para que os resultados se repitam a cada execução.

TarefaCódigo
Gerador com seedrng = np.random.default_rng(42)
Floats em [0, 1)rng.random(3)
Inteiros, limite superior excluídorng.integers(1, 7, size=10)
Distribuição normalrng.normal(loc=0, scale=1, size=(2, 3))
Floats uniformes num intervalorng.uniform(5, 10, size=4)
Sortear de uma listarng.choice(["a", "b", "c"], size=5)
Sortear sem repetiçãorng.choice(10, size=3, replace=False)
Sortear com pesosrng.choice(["H", "T"], size=10, p=[0.7, 0.3])
Cópia embaralhada, embaralhar no lugarrng.permutation(a), rng.shuffle(a)
Contagens binomial e Poissonrng.binomial(10, 0.5, size=5), rng.poisson(3, size=5)

Álgebra linear

TarefaCódigo
Produto de matrizesA @ A
Resolver Ax = bnp.linalg.solve(A, b) # [0.8 1.4]
Inversa e determinantenp.linalg.inv(A), np.linalg.det(A)
Norma de um vetornp.linalg.norm(b)
Autovalores e autovetoresvalues, vectors = np.linalg.eig(A)
Ajustar uma retaslope, intercept = np.polyfit(x, y, 1)
Produto externonp.outer([1, 2], [3, 4])
Diagonal e traçonp.diag(A), np.trace(A)

Valores ausentes e especiais

np.nan marca um float ausente. Qualquer conta com ele dá nan, então use as funções nan ou uma máscara.

TarefaCódigo
Valor ausentenp.nan
Encontrar valores ausentesnp.isnan(v), np.isnan(v).sum()
Remover valores ausentesv[~np.isnan(v)]
Substituir ausentes e infinitosnp.nan_to_num(v, nan=0.0, posinf=0.0)
Testar infinito e finitonp.inf, np.isfinite(v)
Estatísticas que ignoram NaNnp.nanmean(v[:3]) # 2.0, np.nanmax(v)

Salvar e carregar

TarefaCódigo
Um array, arquivo binárionp.save("data.npy", m), m = np.load("data.npy")
Vários arrays num arquivonp.savez("data.npz", x=x, y=y), np.load("data.npz")["x"]
Gravar texto CSVnp.savetxt("data.csv", m, delimiter=",", fmt="%d")
Ler texto CSVnp.loadtxt("data.csv", delimiter=",")

NumPy 2: nomes antigos e o que escrever agora

O NumPy 2 removeu muitos aliases, então código copiado de tutoriais antigos pode falhar com um AttributeError.

TarefaNumPy 2Forma antiga
Valor ausentenp.nannp.NaN
Infinitonp.infnp.Inf
Tipo float de 64 bitsnp.float64np.float_
Área sob uma curvanp.trapezoid(y, x)np.trapz(y, x)
Cada elemento está em outro array?np.isin(a, b)np.in1d(a, b)
Empilhar linhasnp.vstack([a, a])np.row_stack([a, a])
Produtonp.prod(a)np.product(a)
Números aleatóriosrng = np.random.default_rng(0) rng.random(3)np.random.seed(0) np.random.rand(3)

As chamadas NumPy que sustentam o código de ciência de dados, organizadas por tarefa: criar arrays, inspecionar, indexar e fatiar, fazer contas elemento a elemento, agregar ao longo de um eixo, remodelar e combinar, ordenar e buscar, gerar números aleatórios e resolver álgebra linear. Cada linha traz um trecho curto para colar e uma frase sobre o que ele faz.

Tudo aqui foi escrito para o NumPy 2, a versão que a Coddy roda, e a última tabela lista os nomes que o NumPy 2 removeu, ao lado do que escrever no lugar. A maioria dos exemplos usa a = np.array([3, 1, 4, 1, 5, 9, 2, 6]) e m = np.arange(12).reshape(3, 4). Está começando em Python? Comece pela folha de consulta Python e pelo playground de Python, e deixe as folhas de consulta de pandas, Matplotlib e scikit-learn abertas ao lado desta.

Perguntas frequentes sobre a folha de consulta NumPy

Esta folha de consulta de NumPy é grátis?
Sim. Esta folha de consulta de NumPy é totalmente grátis, sem cadastro. Salve nos favoritos ou imprima em PDF pelo navegador, e volte sempre que precisar da chamada exata para um reshape, uma soma por eixo ou um sorteio aleatório.
Qual versão do NumPy esta folha de consulta cobre?
O NumPy 2. Todos os trechos rodam no NumPy 2.4, a versão que a Coddy roda. O NumPy 2 removeu aliases como np.NaN, np.float_, np.trapz e np.in1d, então a última tabela mostra cada um ao lado do nome atual.
O que significa axis=0 no NumPy?
O eixo é a dimensão que é colapsada. Num array 2D, axis=0 percorre as linhas para baixo, então m.sum(axis=0) devolve um total por coluna. axis=1 percorre as colunas e devolve um total por linha. Sem eixo, a função usa todos os elementos.
Qual é a diferença entre uma view e uma cópia?
Uma fatia como a[1:3] é uma view: ela compartilha memória com a, então alterar a fatia altera a. Máscaras booleanas e listas de índices como a[a > 2] ou a[[0, 2]] devolvem cópias. Chame .copy() quando precisar de um array independente.
Por que usar um array NumPy em vez de uma lista Python?
Arrays guardam um só tipo em um bloco único de memória, então contas no array inteiro rodam em código compilado e costumam ser muitas vezes mais rápidas que um loop Python. a * 2 dobra cada elemento, enquanto [1, 2] * 2 repete a lista. O pandas e o scikit-learn são construídos sobre arrays NumPy.
Devo usar np.random.seed ou default_rng?
Use rng = np.random.default_rng(seed) e chame os métodos em rng, como rng.normal() ou rng.integers(). É a API recomendada, com fluxos aleatórios melhores e sem estado global escondido. np.random.seed e np.random.rand ainda funcionam, mas são a interface legada.
Posso rodar código NumPy online?
Sim. O playground de Matplotlib grátis roda Python com NumPy, pandas, Matplotlib e scikit-learn no navegador, então você pode colar qualquer trecho desta folha de consulta e rodar sem instalar nada. O curso de Machine Learning da Coddy ensina NumPy passo a passo, trabalhando com dados reais.
Ilustração das linguagens de programação do Coddy

Aprenda NumPy com a Coddy

COMEÇAR