Indexação no NumPy: Slices, Máscaras e Índices resolve um problema recorrente em projetos Python: Selecione partes de arrays multidimensionais entendendo quando o resultado compartilha memória. Este guia mostra o mecanismo, um exemplo executável e os limites que evitam uma implementação frágil.

Conceito e caso de uso

Indexação básica com slices normalmente cria uma view; indexação avançada com arrays inteiros ou booleanos produz uma cópia. Essa diferença afeta memória e mutações.

Para revisar os fundamentos relacionados, consulte também o guia completo de NumPy. A integração fica mais simples quando cada função recebe dependências e dados explicitamente, em vez de depender de estado global.

Exemplo prático

import numpy as np

a = np.arange(20).reshape(4, 5)
row = a[1, :]
last_column = a[:, -1]
selected = a[[0, 2], [1, 3]]
mask = a % 2 == 0
evens = a[mask]

copy = a[[0, 2]]
view = a[:, 1:3]

Use uma tupla de índices por eixo, preserve dimensões com intervalos quando necessário e nomeie máscaras complexas antes de aplicá-las.

Decisões importantes

A escolha correta depende do contrato público, do volume e do comportamento em caso de falha.

Considere como a solução se comporta sob concorrência, entradas vazias e falhas parciais. Documente qualquer limite que afete consumidores e mantenha nomes que expressem a intenção.

Erros comuns

O exemplo mínimo não substitui limites, tratamento de erros e observabilidade. Encadear índices pode criar temporários e esconder se a atribuição atinge o original. Máscaras devem ter shape compatível com os eixos selecionados.

Evite capturar exceções sem contexto ou retornar resultados parciais como se fossem completos. Uma falha explícita costuma ser mais segura que dados silenciosamente incorretos.

Como validar

Valide o comportamento, não apenas a linha feliz. Confira shape, dtype e np.shares_memory nos casos críticos. Teste também arrays vazios, limites negativos e máscaras sem correspondência.

A documentação oficial, consultada em 28 de julho de 2026, detalha a API e deve ser a referência para mudanças futuras.