How to find indices of a given value in a numpy array (or matrix) in python ?


Examples of how to find indices of a value in a numpy array (or matrix) in python:

Find indices of a value using "where"

Let's create a 1d matrix with numpy (for that we generate random integers between [0,10[ for a matrix of dimensions (8,))

import numpy as np

a = np.random.randint(10, size=(8,))

print(a)

returns for example

[7 3 5 9 8 0 5 3]

How to find indices of a given value in a numpy array (or matrix) in python ?
How to find indices of a given value in a numpy array (or matrix) in python ?

To find the indice of the value 7 for example, a solution is to use numpy where:

    np.where(a==7)

returns here:

    (array([0]),)

meaning that 7 is at the index 0.

Note that np.where() returns a tuple object:

type(np.where(a==7))

gives

tuple

Another example

np.where(a==8)

returns

(array([4]),)

meaning that 8 is at the index 4.

If a value is present several times, for example with 3, then numpy where

np.where(a==3)

returns several indices

(array([1, 7]),)

Here 3 is at the indices 1 and 7.

Note: code to plot the above figure

a = np.array([7, 3, 5, 9, 8, 0, 5, 3])

a = a[:,np.newaxis]

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt

ax = sns.heatmap(a.T, annot=True, fmt="d", cbar=False)

plt.title("How to find indices of a given value \n in a numpy array (or matrix) in python ?",fontsize=12)

plt.savefig("find_indices_value_numpy_matrix_01.png", bbox_inches='tight', dpi=100)

plt.show()

Another example with a 2d matrix

a = np.random.randint(100, size=(8,6))

print(a)

returns

[[31 15 26 54 44 24]
 [ 2 54 17 22 54 50]
 [ 7 96 50 15 53 81]
 [95  3 76 47 27 70]
 [ 2 33 72 56 35  8]
 [19 47 41 38 38 20]
 [72 20 21 34  2 70]
 [26  3 52 27 84 72]]

How to find indices of a given value in a numpy array (or matrix) in python ?
How to find indices of a given value in a numpy array (or matrix) in python ?

Then for 7

np.where(a==7)

we found

(array([2]), array([0]))

meaning 7 is at the index x0 = 2 and x1 = 0.

Note that for a 2d matrix numpy.where() returns a 2d typle.

Another example

    np.where(a==70)

returns

    (array([3, 6]), array([5, 5]))

meaning that the value 70 is at the indices (3,5) and (6,5).

References

Image

of