Indexación en NumPy: Slices, Máscaras e Índices resuelve un problema frecuente en proyectos Python: Selecciona regiones de arrays multidimensionales entendiendo cuándo comparten memoria. Esta guía explica el mecanismo, presenta un ejemplo ejecutable y marca los límites que evitan una implementación frágil.

Concepto y caso de uso

La indexación básica con slices suele crear una vista; la indexación avanzada con arrays enteros o booleanos produce una copia. Esto afecta memoria y mutaciones.

Para repasar los fundamentos relacionados, consulta también la guía completa de NumPy. La integración es más simple cuando cada función recibe dependencias y datos explícitamente en lugar de depender de estado global.

Ejemplo práctico

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]

Usa un índice por eje, conserva dimensiones con intervalos cuando sea necesario y asigna nombres a máscaras complejas.

Decisiones importantes

La elección correcta depende del contrato público, del volumen y del comportamiento ante fallos.

Considera concurrencia, entradas vacías y fallos parciales. Documenta cada límite que afecte a consumidores y usa nombres que expresen intención.

Errores frecuentes

El ejemplo mínimo no sustituye límites, manejo de errores y observabilidad. Encadenar índices puede crear temporales y ocultar si la asignación alcanza el original. Las máscaras deben tener shape compatible.

Evita capturar excepciones sin contexto o devolver resultados parciales como si fueran completos. Un fallo explícito suele ser más seguro que datos silenciosamente incorrectos.

Cómo validar

Valida el comportamiento y no solo el camino feliz. Comprueba shape, dtype y np.shares_memory en operaciones críticas. Prueba arrays vacíos, límites negativos y máscaras sin coincidencias.

La documentación oficial, consultada el 28 de julio de 2026, detalla la API y debe ser la referencia para cambios futuros.