Fatiamento e indexação de vetores
Selecione elementos individuais, linhas, colunas e subvetores usando notação de inteiros e de fatias em vetores multidimensionais.
Fatiamento e indexação de vetores é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 4 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.
Indexação inteira em matrizes 1D
Uma matriz 1D é indexada como uma lista: a[0] é o primeiro elemento e a[-1] é o último. A indexação retorna um único escalar, e números negativos contam a partir do fim.
import numpy as np
a = np.array([10, 20, 30, 40, 50])
print(a[0]) # 10
print(a[-1]) # 50
print(a[2]) # 30Fatiando matrizes 1D
Os intervalos usam start:stop:step, como nas listas, mas um intervalo do NumPy retorna uma visualização — não uma cópia. Altere o intervalo e você alterará o original; por isso, use .copy() quando necessário.
import numpy as np
a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
print(a[2:7]) # [2 3 4 5 6]
print(a[::2]) # [0 2 4 6 8]
print(a[::-1]) # [9 8 7 6 5 4 3 2 1 0]Indexando matrizes 2D
Para matrizes 2D, use a sintaxe com vírgula: a[row, col]. Dois-pontos sozinhos significam tudo ao longo daquele eixo; assim, a[0, :] obtém uma linha inteira e a[:, 1], uma coluna inteira.
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(m[1, 2]) # 6 (row 1, col 2)
print(m[0, :]) # [1 2 3] first row
print(m[:, 1]) # [2 5 8] second columnFatiando matrizes 2D
Forneça dois intervalos para obter um bloco retangular: a[0:2, 1:3] seleciona essas linhas e colunas. O resultado é uma visualização, portanto as alterações também afetam o original.
import numpy as np
m = np.arange(16).reshape(4, 4)
print(m)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
print(m[1:3, 1:3])
# [[ 5 6]
# [ 9 10]]Indexação booleana
Passe uma matriz booleana para manter apenas os elementos marcados como True. Essa indexação booleana sempre retorna uma cópia e é a maneira padrão de filtrar dados.
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6])
mask = a > 4
print(mask) # [False True False True False True]
print(a[mask]) # [7 9 6]
# Equivalent one-liner
print(a[a > 4]) # [7 9 6]Indexação avançada com matrizes de inteiros
A indexação avançada permite escolher elementos em quaisquer posições com uma lista de inteiros — em qualquer ordem e até repetindo posições. Ela sempre retorna uma cópia.
import numpy as np
a = np.array([10, 20, 30, 40, 50])
idx = [4, 1, 3]
print(a[idx]) # [50 20 40]
# Selecting specific rows from a 2D array
m = np.arange(20).reshape(4, 5)
print(m[[0, 2], :]) # rows 0 and 2np.where para seleção condicional
np.where(condition, x, y) escolhe valores de x quando a condição é True e de y quando é False — uma maneira rápida, sem laços, de escolher valores para cada elemento.
import numpy as np
a = np.array([5, -3, 8, -1, 2])
result = np.where(a > 0, a, 0) # keep positives, zero negatives
print(result) # [5 0 8 0 2]
# np.where with one argument returns indices of True elements
idx = np.where(a > 0)
print(idx) # (array([0, 2, 4]),)Intervalos são visualizações — atenção!
Atenção: como os intervalos são visualizações, editar um deles também edita a matriz original. Precisa de uma parte independente? Primeiro chame .copy() no intervalo. ⚠️
import numpy as np
original = np.arange(6)
view = original[2:5] # view, not copy
view[:] = 99
print(original) # [ 0 1 99 99 99 5] -- original changed!
safe = original[2:5].copy() # true copy
safe[:] = 0
print(original) # [ 0 1 99 99 99 5] -- unchangedIndexação de matrizes 3D
As matrizes podem ter qualquer quantidade de dimensões. Em uma matriz 3D, você indexa com três posições: a[depth, row, col] — algo comum ao trabalhar com lotes de imagens.
import numpy as np
t = np.arange(24).reshape(2, 3, 4)
print(t.shape) # (2, 3, 4)
print(t[0, :, :]) # first 'plane' -- shape (3, 4)
print(t[1, 2, 3]) # scalar at depth 1, row 2, col 3Atribuindo valores por meio da indexação
Qualquer forma de indexação pode ser usada no lado esquerdo de um = para alterar valores no próprio lugar — intervalos, máscaras ou índices avançados. Atribua um escalar e o NumPy o distribuirá por todas as posições.
import numpy as np
a = np.zeros(8)
a[2:5] = 1.0 # slice assignment
print(a) # [0. 0. 1. 1. 1. 0. 0. 0.]
a[a == 0] = -1.0 # boolean assignment
print(a) # [-1. -1. 1. 1. 1. -1. -1. -1.]Reticências e np.newaxis
np.newaxis (ou None) adiciona um eixo de tamanho 1, transformando uma matriz (5,) em um vetor coluna (5, 1) — uma preparação comum antes do broadcasting.
import numpy as np
t = np.ones((2, 3, 4))
print(t[..., 0].shape) # (2, 3) -- last axis fixed at 0
a = np.array([1, 2, 3])
print(a.shape) # (3,)
print(a[:, np.newaxis].shape) # (3, 1) column vectorVerificação rápida
Teste sua compreensão sobre o fatiamento e a indexação de matrizes NumPy nesta lição.
Recapitulação da lição
Muito bem! Os intervalos são visualizações que compartilham memória, a indexação booleana filtra e copia, e a indexação avançada obtém quaisquer elementos que você indicar. A seguir: funções universais.
Aprenda Python com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Fatiamento e indexação de vetores” é grátis?
Sim — o texto completo de “Fatiamento e indexação de vetores” é 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 “Fatiamento e indexação de vetores”?
Selecione elementos individuais, linhas, colunas e subvetores usando notação de inteiros e de fatias em vetores multidimensionais. 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 4 de 4.
Quanto tempo leva a aula “Fatiamento e indexação de vetores”?
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
- Criando vetores NumPy
- Atributos e inspeção de vetores
- Aritmética elemento a elemento
- Fatiamento e indexação de vetores