0Pricing
Python Academy · Aula

Indexação, fatiamento e indexação avançada

Acesse e modifique elementos de arrays com técnicas avançadas de indexação.

Indexação, fatiamento e indexação avançada é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 3 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 Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Indexação básica

Acesse elementos com índices inteiros começando em zero. Índices negativos contam a partir do fim. Arrays multidimensionais usam índices separados por vírgulas.

import numpy as np

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[0, 2])    # 3
print(arr[-1, -1])  # 9
print(arr[1])       # [4 5 6]

Fatiamento

A sintaxe de fatiamento start:stop:step retorna uma visualização. Ela se aplica de forma independente a cada dimensão.

import numpy as np

m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
#  [9 10]]
print(m[::2, ::2])   # every other row and column

Indexação booleana (máscara)

Forneça um array booleano com a mesma forma para selecionar os elementos cujo valor seja True.

import numpy as np

arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask)         # [ True False  True False  True]
print(arr[mask])    # [1 3 5]
arr[~mask] = 0      # set negatives to 0
print(arr)          # [1 0 3 0 5]

Indexação avançada com arrays de inteiros

Forneça um array de índices inteiros para selecionar vários elementos específicos.

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx])   # [10 30 50]

# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]])   # [m[0,0], m[2,2]] = [0, 8]

np.where para seleção indexada

np.where(condition) (com um argumento) retorna os índices nos quais a condição é True.

import numpy as np

arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx)         # [0 2 4]
print(arr[idx])    # [5 8 9]

np.take e np.put

np.take(arr, indices) seleciona elementos (oferece suporte à indexação linear). np.put(arr, indices, values) insere valores.

import numpy as np

arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3]))   # [20 40]

np.put(arr, [0, 2], [99, 88])
print(arr)   # [99 20 88 40]

np.nonzero

np.nonzero(arr) retorna uma tupla de arrays — um por dimensão — contendo os índices dos elementos diferentes de zero.

import numpy as np

arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols)   # [0 1 1] [1 0 2]

Indexação com reticências

... (reticências) se expande para o número necessário de : para abranger as dimensões restantes.

import numpy as np

arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape)   # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape)      # (2, 3, 4) — last dim=0

np.ix_ para indexação externa

np.ix_ constrói uma malha aberta a partir de várias sequências unidimensionais para uma indexação avançada no estilo de produto externo.

import numpy as np

m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1  3]
#  [11 13]
#  [21 23]]

Atribuindo a um índice avançado

Você pode atribuir valores diretamente a uma seleção feita com indexação avançada.

import numpy as np

arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr)   # [ 0. 10.  0. 20.  0.]

# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr)   # [99. 10. 99. 20. 99.]

Diferença entre visualização e cópia na indexação

Indexação básica/por fatias → visualização (modificá-la altera o original). Indexação avançada/booleana → cópia (modificá-la NÃO altera o original).

import numpy as np

arr = np.arange(5)
view = arr[1:4]   # view
view[0] = 99
print(arr)         # [0 99 2 3 4]

copy = arr[[1,2,3]]   # fancy → copy
copy[0] = 0
print(arr)         # unchanged

Verificação rápida

A indexação booleana/avançada retorna uma visualização ou uma cópia?

Recapitulação

Use [row, col] para elementos individuais, start:stop:step para fatias (visualizações), arrays booleanos para máscaras (cópias) e arrays de inteiros para indexação avançada (cópias). Use np.where para obter índices e np.ix_ para malhas externas.

Perguntas Frequentes

A aula “Indexação, fatiamento e indexação avançada” é grátis?

Sim — o texto completo de “Indexação, fatiamento e indexação avançada” é 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 Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Indexação, fatiamento e indexação avançada”?

Acesse e modifique elementos de arrays com técnicas avançadas de indexação. Você pratica Python 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 Python Academy?

Nenhuma experiência prévia é necessária. Python 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 3 de 4.

Quanto tempo leva a aula “Indexação, fatiamento e indexação avançada”?

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 Python Academy?

Sim. Cada aula de Python 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. Arrays NumPy e dtypes
  2. Operações com arrays e broadcasting
  3. Indexação, fatiamento e indexação avançada
  4. Álgebra linear com NumPy
← Voltar para Python Academy