Python unique, todos los valores de un array sin repetirse.

En este tutorial se explica Python unique, el comando de la librería Numpy que nos arroja como resultado un array con todos los valores del arreglo sin repetirlos, es decir, todos los valores únicos del arreglo.

Resumen rápido Python unique numpy.

Este es un resumen rápido, donde te mostraremos la sintaxis de Python unique de Numpy, para ejemplos y más detalles sobre el parámetro continuo leyendo este artículo.

Nota: Puedes buscar resúmenes rápidos escribiendo en google: Resumen rápido Python “Comando a buscar”

Primero debemos importar la librería numpy.

Luego este comando tiene 5 parámetros, de los cuales 4 son opcionales.

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

  • ar, arreglo de entrada.
  • return_index, opcional tipo booleana.
    • Si es True, el resultado son 2 arreglos y el tipo de variable. El primero indica los valores sin repetirse, el segundo indica la posición en la que aparece el primer elemento de cada valor sin repetirse. Si es una matriz inicia contando en la primer fila, luego la segunda y así sucesivamente.
  • return_inverse, opcional tipo booleana.
    • Si es True, el resultado son 2 arreglos y el tipo de variable. Sirve para reconstruir el arreglo original. El primer arreglo son los valores sin repetirse. El segundo esta ordenado en el orden del arreglo original y el valor de cada elemento es la posición del arreglo sin repetirse. Más adelante dejamos un ejemplo.
  • return_counts, opcional tipo booleana.
    • Si es True, regresa dos arreglos, el de valores sin repetirse y otro con el número de veces que aparece cada valor en el arreglo original. Está en versiones superiores a 1.9.0.
  • axis, opcional tipo int, por default es None.
    • Indica el número de ejes o dimensiones, en que queremos ver los valores distintos o sin repetirse. Por default el resultado es tipo lista, pero con axis =1 podríamos ver los valores sin repetirse en cada fila (si tenemos un arreglo de 2 dimensiones). Está en versiones superiores a 1.13.0.

 

Ejemplo del comando unique de numpy en Python

El comando Unique de la librería Numpy, nos permite obtener todos los valores distintos que tiene un arreglo. Si un valor se repite solo nos lo mostrará una vez.

Por ejemplo, si tenemos el siguiente arreglo.

Podemos ver que hay varios valores que se repiten, pero si queremos una lista de todos los valores que contiene, podemos usar el comando Unique. El resultado esperado seria: 1, 2, 3, 4, 5, 6, 7.

En el siguiente código vamos a definir la función imprimir, para que al imprimir el arreglo se vea mejor. No es indispensable para el comando Unique.

import numpy as np

def imprimir(z):
    for k in range(len(z)):
        l=""
        for i in range(len(z[0])):
            l = l + "\t" +str(z[k][i])
            print(l)

a1 = ( [1, 5, 6, 4], [5, 2, 1, 7], [4, 2, 3, 1] )
imprimir(a1)
unico = np.unique(a1)
print(unico)                       ## Imprime: [1, 2, 3, 4, 5, 6, 7]

Python Unique

En el código:

  • Primero creamos la función imprimir solo para mostrar mejor el arreglo.
  • Luego creamos el arreglo con los valores y lo imprimimos
  • Después usamos el comando unique de numpy e imprimimos su resultado.

Vemos que el resultado es correcto, solo nos muestra los valores distintos que tiene el arreglo.

Parámetro return_index.

Es opcional y puede ser falso o verdadero, por default su valor de False.

En el siguiente código te mostramos el comando que se usa y los parámetros que tiene, omitimos la función imprimir para que el código se vea más claro, además agregamos una lista para que se encienda mejor.:

a1 = ([1,5,6,4],[5,2,1,7],[4,2,3,1])
unico = np.unique(a1, return_index=True)
b=[1, 4, 2, 4, 1, 4, 2, 1]
c = np.unique(b,  return_index=True)

Este es el resultado:

Python array unique

 

Parámetro return_inverse, unique numpy.

Es opcional y puede ser falso o verdadero, por default su valor de False.

Este parámetro sirve para reconstruir el arreglo.

a1 = ([1,5,6,4],[5,2,1,7],[4,2,3,1])
unico = np.unique(a1, return_inverse=True)


b=[1, 4, 2, 4, 1, 4, 2, 1]
c = np.unique(b,  return_inverse=True)

Este es el resultado:

Python numpy unique

Reconstruyendo el array original en Python unique:

Para la lista, tenemos el resultado de:

array[1, 2, 4]

array[0, 2, 1, 2, 0, 2, 1, 0]

Para reconstruir el arreglo original, vamos a nombrar al primer arreglo a1 y al segundo a2.

El primer arreglo (a1) son los valores del arreglo original sin repetirse. a1[0] = 1, a1[1] = 2 y a1[2] = 4

El segundo arreglo (a2) es la posición del primero (a1) y esta ordenado como el arreglo original.

Las posiciones del segundo arreglo son:  0, 2, 1, 2, 0, 2, 1, 0

Por lo tanto la matriz original es la siguiente:

a1[0], a1[2], a1[1], a1[2], a1[0], a1[2], a1[1], a1[0]

Teniendo este resultado:

[1, 4, 2, 4, 1, 4, 2, 1]

 

Parámetro return_counts.

Es opcional y puede ser falso o verdadero, por default su valor de False.

Muestra un arreglo extra con el número de elementos de cada valor del arreglo original.

a1 = ([1,5,6,4],[5,2,1,7],[4,2,3,1])
unico = np.unique(a1, return_counts=True)

b=[1, 4, 2, 4, 1, 4, 2, 1]
c = np.unique(b,  return_counts=True)

Python unique counts

Parámetro axis (valores distintos por filas).

Es opcional, variable tipo entera (int) por default su valor es None.

Indica en cuantos ejes queremos el resultado, por default revisa todas las filas y columnas de la matriz.

Pero si queremos ver los valores distintos en cada fila o eje podemos usar este parámetro.

Nota: No se puede usar cualquier valor, esto depende de las dimisiones o ejes que tenga nuestro array.

  • En una lista solo podremos usar axis=0.
  • En una matriz con 2 dimensiones (filas x columnas), solo podemos usar axis = 0 y axis = 1.
  • Y así para el resto.

Dejamos el siguiente ejemplo, modificamos el arreglo para tener valores repetidos en cada fila:

a1 = ([1,5,5,4],[5,1,1,7],[4,2,4,1])
unico = np.unique(a1, axis =1)

b=[1, 4, 2, 4, 1, 4, 2, 1]
c = np.unique(b,  axis =0)

Los valores repetidos por fila no los eliminan, pero notamos que los deja en la orilla derecha.

 

Python unique filas

Para más tutoriales de Python ve a este enlace.

Algunos temas que pueden interesarte:

Python reshape array numpy, redimensionar de un arreglo.

 

 

Python array shape numpy.

Concatenar en Python (+, %, *, f string)