Searching in a NumPy array

Numpy provides various methods for searching different kinds of numerical values, in this article, we will cover two important ones.

• numpy.where()
• numpy.searchsorted()

1. numpy.where:() It returns the indices of elements in an input array where the given condition is satisfied.

Syntax: numpy.where(condition[, x, y])

Parameters:

• condition : When True, yield x, otherwise yield y.
• x, y : Values from which to choose. x, y and condition need to be broadcastable to some shape.

Returns:
out : [ndarray or tuple of ndarrays] If both x and y are specified, the output array contains elements of x where condition is True, and elements from y elsewhere.

If only condition is given, return the tuple condition.nonzero(), the indices where condition is True.

The following example demonstrates how to search using where().

Python3

 `# importing the module ``import` `numpy as np `` ` `# creating the array ``arr ``=` `np.array([``10``, ``32``, ``30``, ``50``, ``20``, ``82``, ``91``, ``45``]) `` ` `#  printing arr ``print``(``"arr = {}"``.``format``(arr)) `` ` `#  looking for value 30 in arr and storing its index in i ``i ``=` `np.where(arr ``=``=` `30``) ``print``(``"i = {}"``.``format``(i))`

Output:

```arr = [10 32 30 50 20 82 91 45]
i = (array([2], dtype=int64),)
```

As you can see variable i is an iterable with the index of our searched value as the first element.  We can make it look better by replacing the last print statement with

```print("i = {}".format(i[0]))
```

This will change the final output to

```arr = [10 32 30 50 20 82 91 45]
i = [2]
```

2. numpy.searchsorted(): The function is used to find the indices into a sorted array arr such that, if elements are inserted before the indices, the order of arr would be still preserved. Here, a binary search is used to find the required insertion indices.

Syntax : numpy.searchsorted(arr, num, side=â€™leftâ€™, sorter=None)

Parameters :

• arr : [array_like] Input array. If sorter is None, then it must be sorted in ascending order, otherwise sorter must be an array of indices that sort it.
• num : [array_like]The Values which we want to insert into arr.
• side : [â€˜leftâ€™, â€˜rightâ€™], optional.If â€˜leftâ€™, the index of the first suitable location found is given. If â€˜rightâ€™, return the last such index. If there is no suitable index, return either 0 or N (where N is the length of a).
• num : [array_like, Optional] array of integer indices that sort array a into ascending order. They are typically the result of argsort.

Return : [indices], Array of insertion points with the same shape as num.

The following example explains the use of searchsorted().

Python3

 `# importing the module ``import` `numpy as np `` ` `# creating the array ``arr ``=` `[``1``, ``2``, ``2``, ``3``, ``3``, ``3``, ``4``, ``5``, ``6``, ``6``] ``print``(``"arr = {}"``.``format``(arr)) `` ` `# left-most 3 ``print``(``"left-most index = {}"``.``format``(np.searchsorted(arr, ``3``, side``=``"left"``))) `` ` `# right-most 3 ``print``(``"right-most index = {}"``.``format``(np.searchsorted(arr, ``3``, side``=``"right"``)))`

Output:

```arr = [1, 2, 2, 3, 3, 3, 4, 5, 6, 6]
left-most index = 3
right-most index = 6
```

Previous
Next