Python NumPy na prática: o código e os comandos que realmente importam

Python NumPy: o essencial em um artigo — código real, diagramas e etapas concretas, extraídos de um curso de 35 lições.

Python NumPy na prática: o código e os comandos que realmente importam

Sem teoria interminável aqui: abra o terminal e pratique. Aqui está o essencial de Python NumPy, extraído diretamente de um curso completo de 35 lições — com código real que você pode copiar e colar agora.

tl;dr
  • Introdução e Instalação
  • Criação e inspeção de arrays
  • Indexação, slicing e fancy indexing
  • Operações vetorizadas
  • Broadcasting
~$ cat ./parcours.md # Python NumPy — 10 capítulos
01
Introdução e Instalação
→ Apresentação do curso→ Instalar NumPy e o ambiente+ 1 mais lições
02
Criação e inspeção de arrays
→ Criar arrays→ Inspecionar shape, dtype, ndim+ 1 mais lições
03
Indexação slicing e fancy indexing
→ Indexação básica→ Slicing multi-dimensional+ 1 mais lições
04
Operações vetorizadas
→ Por que vetorizar?→ Operações element-wise+ 1 mais lições
05
Broadcasting
→ As regras do broadcasting→ Broadcasting na prática+ 1 mais lições
06
Álgebra linear
→ Produto matricial→ Transposta, inversa, determinante+ 1 mais lições
07
Estatísticas com NumPy
→ Média, mediana, desvio-padrão→ Percentis e quantis+ 1 mais lições
08
Geração de números aleatórios
→ numpy.random.default_rng→ Distribuições estatísticas+ 1 mais lições
🏁
Projeto final (+ 2 capítulos no caminho)
→ Você sai com um projeto concreto e demonstrável

Criar arrays

NOTEObjetivo — Descobrir todas as fábricas de arrays integradas ao NumPy. Em vez de escrever listas Python manualmente, aprendemos a gerar arrays de qualquer forma com valores predefinidos: zeros, uns, faixas numéricas, matrizes identidade…

Objetivos pedagógicos

TIPAo final deste módulo — Você saberá escolher a fábrica certa para cada necessidade: inicializar uma matriz de pesos em uma rede neural, criar um eixo temporal para um gráfico, gerar uma máscara preenchida com 1, etc. Essas funções aparecem todos os dias em ciência de dados.

Por que nem sempre usar np.array()?

Poderíamos sempre escrever np.array([0,0,0,0,0,0,0,0,0,0]). Mas imagine agora que você precisa de um array com 1 000 000 de zeros: impossível digitar manualmente.

Felizmente, o NumPy oferece fábricas especializadas para esses casos recorrentes. Elas são mais rápidas, mais legíveis e mais seguras que um loop em Python.

np.zeros: uma tabela de zeros

A ferramenta nº 1 para inicializar um array. Passamos como argumento o shape desejado:

output
import numpy as np

# Vetor de 5 zeros
a = np.zeros(5)
print(a)
# [0. 0. 0. 0. 0.]

# Matriz 3 x 4 de zeros
b = np.zeros((3, 4))
print(b)
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

# Cubo 2 x 3 x 4 (um tensor 3D!)
c = np.zeros((2, 3, 4))
print(c.shape)
# (2, 3, 4)
WARNINGAtenção ao parêntese — Para dimensões múltiplas, é preciso passar uma tupla: np.zeros((3, 4)) e não np.zeros(3, 4). Esse é o erro nº 1 dos iniciantes.

np.ones: uma tabela de uns

Idêntico a zeros, mas preenchido com 1. Muito útil como máscara ou como ponto de partida para matrizes de pesos.

output
import numpy as np

# Vetor de pesos inicializados em 1
poids = np.ones(10)
print(poids)
# [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

# Matriz quadrada 3 x 3 de uns
M = np.ones((3, 3), dtype=int)
print(M)
# [[1 1 1]
#  [1 1 1]
#  [1 1 1]]

Note o parâmetro dtype=int: por padrão, zeros e ones produzem float64. Se quiser inteiros, solicite explicitamente.

np.full: preencher com qualquer valor

Quando quiser preencher com um valor diferente de 0 ou 1, use np.full(shape, valor):

output
import numpy as np

# Matriz 2x3 preenchida com 7
sept = np.full((2, 3), 7)
print(sept)
# [[7 7 7]
#  [7 7 7]]

# Tabela de NaN (valor ausente)
nan_arr = np.full(5, np.nan)
print(nan_arr)
# [nan nan nan nan nan]

Caso prático frequente: inicializar uma tabela de resultados com NaN e depois preencher célula por célula durante um cálculo.

np.arange: a versão « range » do NumPy

np.arange(start, stop, step) é o equivalente NumPy da função range do Python, mas retorna um ndarray:

output
import numpy as np

# 0, 1, 2, ..., 9 (stop é excluído)
a = np.arange(10)
print(a)
# [0 1 2 3 4 5 6 7 8 9]

# De 5 a 20 (excluído), passo de 2
b = np.arange(5, 20, 2)
print(b)
# [ 5  7  9 11 13 15 17 19]

# Com passo flutuante: possível, mas evite
c = np.arange(0, 1, 0.1)
print(c)
# [0.  0.1 0.2 ... 0.9] (mas cuidado, ver warning)
WARNINGArmadilha clássica — Com passo flutuante (0.1, 0.01…), arange pode produzir um número de elementos diferente do esperado devido a erros de arredondamento binário. Prefira np.linspace para passos não inteiros.

np.linspace: N pontos regularmente espaçados

np.linspace(start, stop, num) retorna num pontos regularmente espaçados entre start e stop, incluindo ambos os limites:

output
import numpy as np

# 11 pontos de 0 a 1 inclusos
a = np.linspace(0, 1, 11)
print(a)
# [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]

# 5 pontos entre -pi e +pi (ideal para plotar sin/cos)
x = np.linspace(-np.pi, np.pi, 5)
print(x)
# [-3.14 -1.57  0.    1.57  3.14]

# 1000 pontos para um traçado suave
t = np.linspace(0, 10, 1000)

linspace é indispensável para traçar curvas matemáticas com Matplotlib. É a ferramenta nº 1 para criar eixos contínuos.

Indexação básica

NOTEObjetivo — Aprender a acessar precisamente qualquer elemento de um array: um único escalar, uma linha inteira, uma coluna inteira ou um subarray. É uma das competências mais usadas no dia a dia.

Objetivos pedagógicos

TIPAo final deste módulo — Você saberá extrair um elemento único, uma linha ou coluna de uma matriz, usar índices negativos para partir do final e modificar valores específicos com uma atribuição.

Indexação 1D: como uma lista Python

Para um array 1D, a indexação é idêntica à de uma lista Python. O primeiro elemento tem índice 0.

output
import numpy as np

notes = np.array([12, 15, 17, 9, 18, 14])

print(notes[0])     # 12 (primeira nota)
print(notes[2])     # 17 (terceira nota)
print(notes[5])     # 14 (última nota)

O tipo retornado é um escalar NumPy, não um array. Você pode usá-lo como um número Python normal.

Índices negativos: a partir do final

Como em Python, -1 designa o último elemento, -2 o penúltimo, etc.

output
import numpy as np

notes = np.array([12, 15, 17, 9, 18, 14])

print(notes[-1])    # 14  (última)
print(notes[-2])    # 18  (penúltima)
print(notes[-6])    # 12  (a primeira, a partir do final)
TIPDicaarr[-1] é um atalho muito usado para acessar o último valor, sem precisar calcular arr[len(arr)-1].

Indexação 2D: linha e coluna

Para uma matriz, são necessários dois índices: arr[i, j]. Essa é a convenção do NumPy, muito mais clara que arr[i][j] do Python.

output
import numpy as np

bulletin = np.array([
    [14, 15, 12],   # aluno 0
    [18, 11, 17],   # aluno 1
    [9, 10, 8],     # aluno 2
    [16, 19, 14],   # aluno 3
])

# Nota do aluno 1 na matéria 2 (inglês)
print(bulletin[1, 2])    # 17

# O aluno 3 em matemática (coluna 0)
print(bulletin[3, 0])    # 16
WARNINGarr[i, j] e não arr[i][j] — Ambos funcionam, mas arr[i, j] é mais rápido e mais idiomático. arr[i][j] cria primeiro a linha i (um subarray) e depois pega o elemento j; são duas operações em vez de uma.

Extrair uma linha inteira

Com um único índice, recuperamos toda a linha:

output
import numpy as np

bulletin = np.array([
    [14, 15, 12],
    [18, 11, 17],
    [9, 10, 8],
    [16, 19, 14],
])

eleve1 = bulletin[1]
print(eleve1)              # [18 11 17]
print(eleve1.shape)        # (3,)

# Equivalente explícito com slice:
print(bulletin[1, :])      # [18 11 17]

As duas sintaxes bulletin[1] e bulletin[1, :] são equivalentes. A forma com : é mais explícita: « linha 1, todas as colunas ».

Extrair uma coluna inteira

Para a coluna, é OBRIGATÓRIO usar a sintaxe de duas dimensões:

output
import numpy as np

bulletin = np.array([
    [14, 15, 12],
    [18, 11, 17],
    [9, 10, 8],
    [16, 19, 14],
])

# Todas as notas de matemática (coluna 0)
math = bulletin[:, 0]
print(math)               # [14 18  9 16]

# Média por matéria
print("Média math :", bulletin[:, 0].mean())
print("Média franc :", bulletin[:, 1].mean())
print("Média anglais :", bulletin[:, 2].mean())
WARNINGErro frequentebulletin[, 0] não é válido em Python. A vírgula precisa de um membro à esquerda. Use sempre bulletin[:, 0].

Modificar um valor por atribuição

A indexação também funciona em escrita. Você pode modificar um elemento, uma linha inteira ou uma coluna:

output
import numpy as np

bulletin = np.array([
    [14, 15, 12],
    [18, 11, 17],
    [9, 10, 8],
])

# Modificar apenas uma célula
bulletin[0, 1] = 16
print(bulletin[0])
# [14 16 12]

# Substituir toda a linha 2
bulletin[2] = [11, 12, 13]
print(bulletin)
# [[14 16 12]
#  [18 11 17]
#  [11 12 13]]

# Zerar uma coluna inteira
bulletin[:, 2] = 0
print(bulletin)
# [[14 16  0]
#  [18 11  0]
#  [11 12  0]]

Instalar NumPy e o ambiente

NOTEObjetivo — Configurar um ambiente Python limpo, instalar o NumPy e verificar se tudo funciona. Veremos os dois métodos principais: pip (o gerenciador padrão) e conda (a distribuição Anaconda, muito popular em ciência de dados).

Objetivos pedagógicos

TIPAo final deste módulo — Você terá Python instalado, um ambiente virtual criado, NumPy instalado, Jupyter Notebook funcional e a confirmação de que seu setup está pronto para o restante do curso.

Verificar o Python na sua máquina

O NumPy requer Python 3.9 ou mais recente. Para verificar sua versão, abra um terminal e digite:

output
# Windows (PowerShell ou cmd)
python --version

# macOS / Linux
python3 --version

# Saída esperada (exemplo):
# Python 3.12.4

Se o Python não estiver instalado, baixe-o no site oficial python.org/downloads. No Windows, marque a opção « Add Python to PATH » durante a instalação.

WARNINGAtenção — Python 2 está obsoleto — Se o comando python responder « Python 2.7… », use python3 ou instale uma versão recente. O NumPy moderno não suporta mais Python 2 desde 2020.

Por que um ambiente virtual?

Um ambiente virtual é uma pasta isolada que contém sua própria cópia do Python e suas próprias bibliotecas. Ele permite ter um projeto com NumPy 1.26 e outro com NumPy 2.0 sem que eles conflitem.

Sem ambiente virtual

Com ambiente virtual

Método 1: pip + venv (Python padrão)

É o método oficial, leve e integrado ao Python. Crie uma pasta de projeto e abra um terminal dentro dela:

output
# 1. Criar um ambiente virtual chamado "venv"
python -m venv venv

# 2. Ativar o ambiente
# Windows PowerShell:
venv\Scripts\Activate.ps1

# macOS / Linux:
source venv/bin/activate

# 3. Instalar NumPy
pip install numpy

# 4. (Opcional) Instalar também Jupyter e matplotlib
pip install jupyter matplotlib pillow

Uma vez ativado, seu prompt exibe (venv) na frente. Esse é o sinal de que você está trabalhando na sua bolha isolada.

Método 2: Anaconda / Miniconda

Anaconda é uma distribuição científica do Python que já traz instaladas as principais bibliotecas de ciência de dados: NumPy, Pandas, scikit-learn, Jupyter, etc. É extremamente prático para iniciantes.

output
# 1. Baixar o Anaconda em anaconda.com/download
# 2. Executar o instalador gráfico
# 3. Após a instalação, abrir o Anaconda Prompt

# Verificar a versão do NumPy fornecido
conda list numpy

# Criar um ambiente dedicado ao curso
conda create -n cours-numpy python=3.12 numpy jupyter matplotlib pillow

# Ativar
conda activate cours-numpy

Se quiser apenas o estritamente necessário, opte por Miniconda, uma versão leve (~50 MB) em vez do Anaconda (~3 GB).

pip vs conda: qual escolher?

Critério pip + venv conda
Público-alvo Desenvolvedores Python Cientistas de dados, estudantes
Tamanho inicial Muito leve Mais pesado (especialmente Anaconda)
Bibliotecas pré-instaladas Nenhuma Já toda a suíte de ciência de dados
Velocidade de instalação Muito rápida para NumPy Mais lenta, mas resolve melhor as dependências
Bibliotecas C completas Às vezes complicado (OpenCV, etc.) Sempre funcional
Recomendação do curso OK se você já conhece Python Recomendado para iniciantes
TIPNossa recomendação — Se for seu primeiro contato com ciência de dados, instale o Anaconda. Você terá NumPy, Pandas, scikit-learn, Jupyter e tudo o que precisa em um único comando, sem lutar com compiladores C ou variáveis de ambiente.

Verificar se o NumPy funciona

Após a instalação, abra um interpretador Python (digitando python no terminal) e digite:

output
import numpy as np

# Verificar a versão
print(np.__version__)
# Saída esperada (por exemplo): 2.1.0

# Criar um primeiro array
a = np.array([1, 2, 3, 4, 5])
print(a)
print("Tipo :", type(a))
print("Forma :", a.shape)
print("Tipo dos elementos :", a.dtype)
va-plus-loin

Este artigo cobre os trechos mais úteis — o curso completo Python NumPy (11 capítulos, 35 lições, exercícios corrigidos e projeto final) leva você até o fim.

./acceder-au-cours-complet curso gratuito: Dominando o Claude Code

FAQ

Quanto tempo leva para aprender Python NumPy?
Com uma progressão estruturada (11 capítulos, 35 lições curtas e práticas), você atinge um nível operacional em algumas semanas, dedicando 30 a 60 minutos por dia. O importante é praticar cada conceito imediatamente.
Precisa de pré-requisitos?
Básicos de informática são suficientes. Se você sabe usar um terminal e ler código simples, está pronto.
Por onde começar na prática?
Reproduza os comandos deste artigo e depois siga o curso completo Python NumPy: ele encadeia as 35 lições em ordem, com exercícios e projeto final.

📬 Quer receber este tipo de guia toda semana? Inscreva-se gratuitamente — código real, zero enrolação.