Examples of how to find all unique values in a matrix using numpy in python:
Create a matrix
Lets consider the following matrix
import numpy as np
A = np.random.randint(3, size=20)
print(A)
returns for example
[1 2 1 0 1 2 2 1 2 0 2 1 1 1 0 1 2 1 2 2]
Find the unique values in the matrix A
To find the unique values in a matrix, a solution is to use the numpy function called unique, example:
np.unique(A)
which returns here
array([0, 1, 2])
Find the unique values in a 2D matrix
Another example with a matrix of dimensions (3,4)
A = np.random.randint(10, size=(3,4))
print(A)
returns for example
[[9 8 6 7]
[0 8 3 3]
[0 5 9 1]]
Then the function unique:
np.unique(A)
gives
array([0, 1, 3, 5, 6, 7, 8, 9])
Note: to find all unique combinations of values a solution is to use the argument axis in the function unique. For example with the matrix:
A = np.random.randint(2, size=(10,2))
print(A)
which returns fo example
[[1 0]
[0 1]
[1 1]
[1 0]
[1 0]
[1 1]
[0 0]
[1 0]
[0 1]
[1 0]]
Out[13]:
and using axis=0:
np.unique(A, axis=0)
the we get:
array([[0, 0],
[0, 1],
[1, 0],
[1, 1]])
Find all unique values and reconstruct the initial matrix
Lets consider the following matrix:
import numpy as np
A = np.array([-2,6,-7,8,9,-4,3])
print(A)
gives
[-2 6 -7 8 9 -4 3]
then to get the unique values and the associated indexes to reconstruct the initial matrix, just add the argument "return_inverse=True" :
u_values, u_indices = np.unique(A, return_inverse=True)
print(u_values)
print(u_indices)
gives respectively
[-7 -4 -2 3 6 8 9]
and
[2 4 0 5 6 1 3]
Then to reconstruct the initial matrix, one can do:
print(u_values[u_indices])
[-2 6 -7 8 9 -4 3]