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

Publicado el 11 septiembre 2019 por Daniel Rodríguez @analyticslane

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)

No te olvides valorar esta entrada

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Contenido relacionado