← Lumbre

Programación con Python para Datos · 2.º Indexación avanzada y máscaras booleanas

Portada de Indexación avanzada y máscaras booleanas

Indexación avanzada y máscaras booleanas

✦ Más allá del a[0], NumPy permite seleccionar subconjuntos con condiciones: una máscara booleana marca qué elementos conservar · Programación con Python para Datos · Programación · en menos de 8 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: Seleccionar y filtrar elementos de arrays con índices booleanos, índices de posición y máscaras compuestas.

8 min Programación con Python para Datos · Programación 18–30 años
Más
Indexación avanzada y máscaras booleanas

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Programación con Python para Datos · 2.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Indexación avanzada y máscaras booleanas

Ilustracion de Python para datos: DataFrame, graficas y arrays de NumPy.
Python para ciencia de datos: NumPy, pandas y manipulacion de datos.

Mapa conceptual

  • Python para Datos
    • Entorno
      • pip
      • venv
      • Reproducibilidad
    • Funcional
      • Comprensiones
      • Lambda
      • map filter
    • Calidad
      • try except
      • pytest
      • Asserts
    • NumPy
      • Arrays
      • Broadcasting
      • Indexacion
    • Pandas
      • DataFrame
      • Groupby
      • Merge Join

Indexación básica

Un array se indexa por posición como las listas: a[2] toma el tercer elemento; una multidimensional usa coma, m[0, 1]. Los rebanados (slices) con dos puntos devuelven vistas, no copias, así que un cambio en la vista afecta al original si no lo deseas.

Array booleano como máscara

Una comparación como a 0 no devuelve un sí o no, sino un array de booleanos del mismo tamaño. Al usar ese array para indexar, a[a 0], NumPy devuelve solo los elementos donde la condición era verdadera. Esto es el filtrado puro.

Combinar condiciones

  • Usa operadores de bits y paréntesis: (a 0) y (a 10) para un intervalo.
  • y es Y, es O, ~ es NO. Los símbolos and/or de Python no funcionan sobre arrays.
  • Los paréntesis son obligatorios: la precedencia sin ellos rompe la expresión.

np.where

where(condicion, valor_si, valor_no) construye un nuevo array eligiendo elemento a elemento según la máscara, sin bucles. Es la versión vectorizada del «si esto, aquello, de lo contrario esto otro», perfecta para crear columnas derivadas.

Índices de posición (fancy indexing)

En lugar de una condición, pasas un array de enteros con las posiciones que quieres: a[[0, 2, 5]] toma esos tres elementos, en ese orden y permitiendo repetir índices. Sirve para reordenar o remuestrear.

Cada forma de indexar responde a una pregunta distinta sobre los datos.
ModoSintaxis (idea)Devuelve
Por posicióna[0], m[1, 2]un elemento escalar
Rebanadoa[1:4]una vista del segmento
Máscara booleanaa[a 0]copia de los que cumplen
Fancy indexa[[0, 2, 5]]copia en el orden dado

¿Qué devuelve la expresión a[a 0] en un array NumPy?

Asignar con máscara

Las máscaras también escriben: a[a 0] = 0 pone a cero todos los negativos de golpe. Este patrón de «limpiar» valores inválidos es constantísimo al preparar datos antes de un análisis.

Contar y resumir con máscaras

Como los booleanos son 0 y 1 al sumarlos, a 0 seguido de .sum() cuenta cuántos cumplen la condición, y .mean() da la proporción. Sin bucles, obtienes la frecuencia de un evento sobre todo el array.

Cuentas de verdad

np.count_nonzero y np.any / np.all responden a preguntas como «¿hay algún valor ausente?» o «¿están todos ordenados?». Combinadas con máscaras cubren la mayoría de validaciones rápidas sobre un array.

Errores frecuentes

  • Usar and/or en lugar de y sobre arrays: lanza un error de ambigüedad.
  • Olvidar los paréntesis al combinar condiciones y obtener resultados inesperados.
  • Esperar que un rebanado sea una copia y terminar modificando el original por accidente.

Para unir dos condiciones sobre arrays se emplean los operadores de Python and y or.

Del array al DataFrame

Este mismo mecanismo de filtrado es el que usarás en Pandas cada vez que escribas df[df.ventas 100]. Entender la máscara booleana sobre arrays te da la base de todo el filtrado de tablas.

Clasifica cada expresión:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Dado un array de calificaciones, describe con máscaras cómo obtendrías: (1) solo los aprobados, (2) cuántos suspensos hay y (3) poner los negativos a cero. ¿Por qué evitas un bucle?

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
Más sobre esta lección
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.