Pandas & NumPy Academy · Aula

Fatiamento e indexação de vetores

Selecione elementos individuais, linhas, colunas e subvetores usando notação de inteiros e de fatias em vetores multidimensionais.

Aula 4 de 413 etapas

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])    # 30

Fatiando 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 column

Fatiando 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 2

np.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]  -- unchanged

Indexaçã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 3

Atribuindo 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 vector

Verificaçã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.

Grátis para começar

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

  1. Criando vetores NumPy
  2. Atributos e inspeção de vetores
  3. Aritmética elemento a elemento
  4. Fatiamento e indexação de vetores
← Voltar para Pandas & NumPy Academy