Python

Numpy básico: encontrar la posición de un elemento en un Array de Numpy

Hace unos días se explicó cómo crear Array de Numpy a partir de otros objetos de Python. En esta ocasión se va a ver cómo encontrar la posición de un elemento buscnao el valor en un Array de Numpy. Lo que se hará mediante la función np.where().

La función np.where()

La función np.where() devuelve una tupla con la posición del los elementos diferentes de cero de objetos np.array u otros que puedan contener un vector como listas o tuplas. En el caso de que el tipo de dato del objeto sea lógico devuelve la posición de los elementos verdaderos. Lo que se puede ver en el siguiente ejemplo

import numpy as np

np_array = np.array((True, False, True, False))
np.where(np_array)
(array([0, 2]),)

Obteniéndose una tupla con los valores 0 y 2, aquellos índices en los que se encuentra el valor True.

Encontrar la posición de un elemento en un Array de Numpy

Esta función se puede utilizar para localizar la posición de los elementos dentro de un objetos np.array, simplemente escribiendo una operación lógica e inyectando el resultado a esta función. Así para localizar el registro que tiene un valor dentro de un Array de Numpy se puede escribir:

import numpy as np

np_array = np.array((1, 5, 9, 3, 7, 2, 0))
np.where(np_array == 5)
(array([1]),)

En este ejemplo se ha importado Numpy, creado un Array de Numpy y posteriormente se ha buscado la posición de los elementos con valor 5. Obteniéndose una tupla con el valor 1, el índice en el que se encuentra el elemento buscado. Lo que se puede comprobar con el siguiente código.

np_array[np.where(np_array == 5)]
array([5])

Cuando el elemento buscado no se existe

En el caso de que el elemento buscado no exista se obtendrá como respuesta de la función una tupla vacía.

np.where(np_array == 25)
(array([], dtype=int64),)

Obtención de los elementos en una matriz

La función np.where() también se puede utilizar para localizar la posición de los elementos en una matriz. La única diferencia es que en este caso devolverá una tupla con las dos coordenadas. Por ejemplo, al crear una matriz se puede buscar la posición de un elemento.

np_array = np.array(((1, 5), (9, 3), (7, 2)))
print(np_array)

np.where(np_array == 5)
[[1 5]
 [9 3]
 [7 2]]

(array([0]), array([1]))

Otros usos buscar máximos y mínimos

Al comprender el funcionamiento de la función np.where() se puede utilizar para buscar la posición de otros elementos como son los máximos, mínimos o cualquier otra condición más compleja. Para ello solamente se ha de comparar el array con un valor calculado y utiliza esto dentro de la función. Por ejemplo, para localizar el máximo se puede utilizar:

np_array = np.array((1, 5, 9, 3, 7, 2, 0))

np.where(max(np_array) == np_array)
array([9])

Conclusiones

En esta entrada se ha visto cómo se puede utilizar la función np.where() de Numpy para encontrar la posición de un elemento en un Array de Numpy. Una función básica, pero al mismo tiempo interesante ya que permite saber dónde se encuentra un valor dentro de un objeto. Algo que dentro de grandes conjuntos de datos puede no ser fácil encontrar.

Imágenes: Pixabay (Marit Welker)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPy

Recent Posts

Migrar tslane a un paquete dual CommonJS y ESM con tsup y Vitest

tslane es la plantilla que uso como punto de partida para mis librerías TypeScript, nacida…

3 días ago

Cómo construir tu primer scorecard paso a paso

En los artículos anteriores de esta serie vimos la teoría detrás del credit scoring: qué…

5 días ago

Actualizar expresslanets a ES Modules con tsx y Vitest

expresslanets es la plantilla de API REST con Express y TypeScript que empezó como una…

1 semana ago

Pareto/NBD: cuando el abandono silencioso cambia el CLV

En el artículo del Dashboard vimos que Pareto/NBD aparecía junto a BG/NBD con un ajuste…

2 semanas ago

Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Durante años, CommonJS (require/module.exports) ha sido la forma por defecto de organizar módulos en Node.js,…

2 semanas ago

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

3 semanas ago

This website uses cookies.