Búsqueda en una matriz NumPy

La búsqueda de valores en matrices NumPy es una tarea común cuando se trabaja con datos numéricos. A continuación, te proporcionaré una lección detallada sobre cómo buscar matrices en NumPy , incluyendo la búsqueda ordenada, la búsqueda desde el lado derecho y la búsqueda de múltiples valores.

Esta lección introduce una librería o módulo usado en ciencia de datos con Python. Instálalo con pip en local; en el editor de The Data Schools muchas ya vienen precargadas.

Importa, ejecuta el ejemplo mínimo y solo después pasa a casos más complejos.

Supongamos que tienes una matriz NumPy y deseas buscar valores dentro de ella. Aquí hay algunas técnicas comunes:


Búsqueda ordenada

Si tienes una matriz ordenada, puedes utilizar la búsqueda binaria para encontrar un valor específico de manera eficiente. La búsqueda binaria divide la matriz en dos partes y compara el valor objetivo con el elemento en el medio. Luego, descarta la mitad de la matriz donde el valor objetivo no puede estar.

Ejemplo

    import numpy as np

arr = np.array([1, 3, 5, 7, 9, 11, 13, 15, 17, 19])
objetivo = 11
posicion = np.where(arr == objetivo)[0]
print("Posiciones:", posicion)
  

En este ejemplo, np.searchsorted() realiza la búsqueda binaria y devuelve el índice donde se encontró el valor objetivo.


Búsqueda desde el lado derecho de una matriz en NumPy

Para buscar desde el lado derecho de una matriz, puedes utilizar np.where() . Esto te dará todos los índices donde se encuentra el valor.

Ejemplo

    import io

file = io.StringIO("Línea de ejemplo\nSegunda línea\n")

import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

import numpy as np

# Crear una matriz
arr = np.array([1, 2, 3, 2, 4, 5, 2])

# Valor objetivo que deseas buscar
target = 2

# Realizar una búsqueda
# Realizar una búsqueda desde el lado derecho
indices = np.where(arr == target)

# Imprimir
# Imprimir los índices donde se encontró el valor
print(f"{target} encontrado en los índices {indices}")
  
Abrir en editor

En este ejemplo, np.where() devuelve una tupla de índices donde se encuentra el valor objetivo.


Búsqueda de múltiples valores

Si deseas buscar múltiples valores en una matriz, puedes utilizar una lista de valores objetivo y np.isin() para encontrar las coincidencias.

Ejemplo

    import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

import numpy as np

# Crear una matriz
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# Valores objetivo que deseas buscar
targets = [2, 5, 8]

# Realizar una b
# Realizar una búsqueda de múltiples valores
matches = np.isin(arr, targets)

# Imprimir l
# Imprimir los valores que coinciden
print("Valores objetivo encontrados:", arr[matches])
  
Abrir en editor

En este ejemplo, np.isin() devuelve una matriz booleana que indica qué elementos coinciden con los valores objetivo.

Estas son algunas técnicas comunes para buscar en matrices NumPy. Puedes adaptar estas técnicas a tus necesidades específicas según el tipo de búsqueda que desees realizar.

Practica Búsqueda en una matriz NumPy en el editor

Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.

Ejercicio: Crear una matriz ordenada

Si tienes una matriz ordenada, puedes utilizar la búsqueda binaria para encontrar un valor específico de manera eficiente. La búsqueda binaria divide la matriz en dos partes y comp.

Ejemplo

    import numpy as np

# Crear una matriz ordenada
arr = np.array([1, 3, 5, 7, 9, 11, 13, 15, 17, 19])

# Valor objetivo que deseas buscar
target = 11

# Valor objetivo que deseas buscar
target = 11

# Realizar una búsqued
# Realizar una búsqueda binaria
index = np.searchsorted(arr, target)

# Comprobar si se encontró el valor
if index < len(arr) and arr[index] == target:
    print(f"{target} encontrado en el índice {index}")
else:
    print(f"{target} no encontrado en la matriz")
  
Abrir en editor

Ejercicio: Crear un array NumPy

Para buscar desde el lado derecho de una matriz, puedes utilizar np.where() . Esto te dará todos los índices donde se encuentra el valor.

Ejemplo

    import numpy as np

arr = np.array([1, 3, 5, 7, 9, 11, 13, 15, 17, 19])
objetivo = 11
posicion = np.where(arr == objetivo)[0]
print("Posiciones:", posicion)
  
Abrir en editor

Ejercicio: Crear una matriz

Si deseas buscar múltiples valores en una matriz, puedes utilizar una lista de valores objetivo y np.isin() para encontrar las coincidencias.

Ejemplo

    import numpy as np

matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

import numpy as np

# Crear una matriz
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# Valores objetivo que deseas buscar
targets = [2, 5, 8]

# Realizar una b
# Realizar una búsqueda de múltiples valores
matches = np.isin(arr, targets)

# Imprimir l
# Imprimir los valores que coinciden
print("Valores objetivo encontrados:", arr[matches])
  
Abrir en editor

Cómo practicar

1. Pulsa Ejecutar en el bloque de código.
2. Modifica un valor o argumento.
3. Vuelve a ejecutar y observa la consola.

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.