Is there a NumPy function to return the first index of something in an array? Is there a NumPy function to return the first index of something in an array? python python

# Is there a NumPy function to return the first index of something in an array?

Yes, given an array, `array`, and a value, `item` to search for, you can use `np.where` as:

``itemindex = numpy.where(array==item)``

The result is a tuple with first all the row indices, then all the column indices.

For example, if an array is two dimensions and it contained your item at two locations then

``array[itemindex[0][0]][itemindex[1][0]]``

would be equal to your item and so would be:

``array[itemindex[0][1]][itemindex[1][1]]``

If you need the index of the first occurrence of only one value, you can use `nonzero` (or `where`, which amounts to the same thing in this case):

``>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])>>> nonzero(t == 8)(array([6, 8, 9]),)>>> nonzero(t == 8)[0][0]6``

If you need the first index of each of many values, you could obviously do the same as above repeatedly, but there is a trick that may be faster. The following finds the indices of the first element of each subsequence:

``>>> nonzero(r_[1, diff(t)[:-1]])(array([0, 3, 5, 6, 7, 8]),)``

Notice that it finds the beginning of both subsequence of 3s and both subsequences of 8s:

[1, 1, 1, 2, 2, 3, 8, 3, 8, 8]

So it's slightly different than finding the first occurrence of each value. In your program, you may be able to work with a sorted version of `t` to get what you want:

``>>> st = sorted(t)>>> nonzero(r_[1, diff(st)[:-1]])(array([0, 3, 5, 7]),)``

You can also convert a NumPy array to list in the air and get its index. For example,

``l = [1,2,3,4,5] # Python lista = numpy.array(l) # NumPy arrayi = a.tolist().index(2) # i will return index of 2print i``

It will print 1.