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().
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.
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])
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),)
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]))
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])
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)
En un entrada previa explicamos qué son el WOE y el IV y por qué…
Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
This website uses cookies.