Python

Numpy básico: localizar valores únicos en arrays Numpy

Una de las tareas más habituales con los conjuntos de datos es la identificación de los valores únicos. Por eso Numpy cuenta con una función para ello: unique(). En esta entrada se verá como utilizar esta función.

La función unique()

La función de Numpy que permite localizar valores únicos en arrays es unique(), la cual se puede utilizar de la siguiente forma:

np.unique(arr, return_index=False, return_inverse=False, return_counts=False, axis=None)

donde

  • arr: es el array de Numpy en el que se van a buscar los valores únicos.
  • return_index: es un valor lógico opcional que indica si se tiene que devolver el índice de las ocurrencias de cada valor único. Su valor por defecto es falso.
  • return_inverse: es un valor lógico opcional que indica si se tiene que devolver un array con el que recuperar el original a partir de los valores únicos. Su valor por defecto es falso.
  • return_counts: es un valor lógico opcional que indica si se tiene que devolver el número de ocurrencias de cada valor. Su valor por defecto es falso.
  • axis: si no se indica nada se aplica sobre la matriz. Se puede indicar 0 o 1 para que se aplique sobre las filas o columnas respectivamente.

La función devuelve una array Numpy con los valores únicos o, según las opciones indicadas, tuplas con información adicional. A continuación, se pueden ver algunos ejemplos de uso de esta función.

Obtener los valores únicos en arrays Numpy

El uso básico de la función unique() es pasándole simplemente un array Numpy. Por ejemplo, se puede crear uno con valores duplicados y observar cómo se pueden obtener los que nos únicos.

import numpy as np

arr = np.array([12, 12, 9, 1, 2, 9, 8, 2, 1])

np.unique(arr)
array([ 1,  2,  8,  9, 12])

Identificar la primera aparición de los valores en arrays Numpy

Una de las opciones que tiene unique() es la posibilidad de devolver la posición de la primera ocurrencia de cada uno de los valores. Para ello se tiene que indicar el valor de return_index como verdadero. En tal caso se obtendrá una tupla con los valores únicos en primer lugar y las posiciones en el segundo. Algo que se puede ver en el siguiente ejemplo.

np.unique(arr, return_index=True)
(array([ 1,  2,  8,  9, 12]), array([3, 4, 6, 2, 0]))

Algo que se puede utilizar para recuperar los valores únicos a partir del vector original.

unique, indices = np.unique(arr, return_index=True)
arr[indices]

Contar el número de apariciones

Además de la posición también se puede obtener el número de ocurrencias de cada valor. Al igual que antes esto se indica en uno de los parámetros, en este caso return_counts. Con un funcionamiento similar al que se ha en el caso anterior.

np.unique(arr, return_counts=True)
(array([ 1,  2,  8,  9, 12]), array([2, 2, 1, 2, 2]))

Obtener un vector con que construir el original

Otra de la opciones que existen en unique() es la posibilidad de obtener un vector que permita recuperar el array original a partir del de únicos. Lo que depende de lo que se indique en la variable return_inverse. Lo que puede ser interesante en ciertas ocasiones.

unique, indices = np.unique(arr, return_inverse=True)
unique[indices]

En este ejemplo se puede apreciar cómo utilizar la salida de unique() para recuperar el array original a partir del de únicos.

Conclusiones

En esta entrada se ha visto la función unique() con la que es posible localizar valores únicos en arrays Numpy. Como se ha visto no solamente permite obtener los valores únicos, sino que también permite obtener las posiciones de estos y contar el número de ocurrencias. Por lo que es una función que se debe tener en cuenta.

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

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 día ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

2 días ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

6 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

1 semana ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

2 semanas ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

This website uses cookies.