Python NumPy For Your Grandma - 4.7 unique()

In this section, we’ll see how to use the unique() function to get the unique elements of an array.

It’s pretty simple to use. If you have an array called gar

import numpy as np

gar = np.array(['b', 'b', 'a', 'a', 'c', 'c'])
## ['b' 'b' 'a' 'a' 'c' 'c']

then np.unique(gar) gives you the unique elements.

## array(['a', 'b', 'c'], dtype='<U1')

Simple enough, although, you may have noticed that the order in which the elements occurred in the original array is different than the output. In the original array, ‘b’ occurred first but in the output, ‘a’ occurs first. That’s because unique() returns the unique elements in sorted order.

Let’s try that again, but this time we’ll call unique() with return_index = True.

np.unique(gar, return_index = True)
## (array(['a', 'b', 'c'], dtype='<U1'), array([2, 0, 4]))

With return_index = True, NumPy gives us a tuple containing the unique elements array and a corresponding array that tells us the index at which each element first occurred in the original array.

For example, ‘a’ first occurred at index 2 in the original array, ‘b’ first occurred at index 0, and so on. This is useful if you want to reorder the unique elements in the same order they occurred in the original array. To do this, argsort() the index array and use that to sort the unique array.

uniques, first_positions = np.unique(gar, return_index = True)
## array(['b', 'a', 'c'], dtype='<U1')

Another sweet feature of unique() is that you can tell NumPy to return the count of each element. To do this, just set return_counts = True.

np.unique(gar, return_counts = True)
## (array(['a', 'b', 'c'], dtype='<U1'), array([2, 2, 2]))

Course Curriculum

  1. Introduction
    1.1 Introduction
  2. Basic Array Stuff
    2.1 NumPy Array Motivation
    2.2 NumPy Array Basics
    2.3 Creating NumPy Arrays
    2.4 Indexing 1-D Arrays
    2.5 Indexing Multidimensional Arrays
    2.6 Basic Math On Arrays
    2.7 Challenge: High School Reunion
    2.8 Challenge: Gold Miner
    2.9 Challenge: Chic-fil-A
  3. Intermediate Array Stuff
    3.1 Broadcasting
    3.2 newaxis
    3.3 reshape()
    3.4 Boolean Indexing
    3.5 nan
    3.6 infinity
    3.7 random
    3.8 Challenge: Love Distance
    3.9 Challenge: Professor Prick
    3.10 Challenge: Psycho Parent
  4. Common Operations
    4.1 where()
    4.2 Math Functions
    4.3 all() and any()
    4.4 concatenate()
    4.5 Stacking
    4.6 Sorting
    4.7 unique()
    4.8 Challenge: Movie Ratings
    4.9 Challenge: Big Fish
    4.10 Challenge: Taco Truck
  5. Advanced Array Stuff
    5.1 Advanced Array Indexing
    5.2 View vs Copy
    5.3 Challenge: Population Verification
    5.4 Challenge: Prime Locations
    5.5 Challenge: The Game of Doors
    5.6 Challenge: Peanut Butter
  6. Final Boss
    6.1 as_strided()
    6.2 einsum()
    6.3 Challenge: One-Hot-Encoding
    6.4 Challenge: Cumulative Rainfall
    6.5 Challenge: Table Tennis
    6.6 Challenge: Where’s Waldo
    6.7 Challenge: Outer Product