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}")
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])
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")
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)
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])
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.