Index of element in NumPy array [duplicate]
Use np.where
to get the indices where a given condition is True
.
Examples:
For a 2D np.ndarray
called a
:
i, j = np.where(a == value) # when comparing arrays of integersi, j = np.where(np.isclose(a, value)) # when comparing floating-point arrays
For a 1D array:
i, = np.where(a == value) # integersi, = np.where(np.isclose(a, value)) # floating-point
Note that this also works for conditions like >=
, <=
, !=
and so forth...
You can also create a subclass of np.ndarray
with an index()
method:
class myarray(np.ndarray): def __new__(cls, *args, **kwargs): return np.array(*args, **kwargs).view(myarray) def index(self, value): return np.where(self == value)
Testing:
a = myarray([1,2,3,4,4,4,5,6,4,4,4])a.index(4)#(array([ 3, 4, 5, 8, 9, 10]),)