Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get row numbers of rows matching a condition in numpy

Suppose I have a numpy array like:

a = array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9],
       [3, 2, 1]])

I want to check if the second element == 2.

I know I can do this:

>>> a[:,1]==2
array([ True, False, False,  True], dtype=bool)

returning booleans. My question is, how do I get the row numbers of the rows where the condition is true? In this example I would want to get back array([0, 3]) because the 0th and 3rd rows match the condition second element == 2.

like image 926
Ben S. Avatar asked May 09 '15 23:05

Ben S.


1 Answers

Use np.where to return the indices:

In [79]:

np.where(a[:,1]==2)
Out[79]:
(array([0, 3], dtype=int64),)
like image 95
EdChum Avatar answered Sep 19 '22 21:09

EdChum