[Numpy-discussion] indexing with booleans without making a copy?

Ernest Adrogué eadrogue at gmx.net
Wed Sep 8 15:21:49 EDT 2010


Hello,

I have a sorted, flat array:

In [139]: a =np.array([0,1,2,2,2,3])

Basically, I want views of the areas where there
are repeated numbers (since the array is sorted, they
will be contiguous).

But, of course, to find the numbers that are repeated
I have to use comparison operations that return
boolean arrays, so I suppose the problem is converting
the boolean array into a slice.  

This is what I have come up with:

In [146]: np.flatnonzero(a==2)
Out[146]: array([2, 3, 4])

In [147]: b=np.flatnonzero(a==2)

In [148]: b.min()
Out[148]: 2

In [149]: b.max()
Out[149]: 4

In [150]: a[b.min():b.max()+1]
Out[150]: array([2, 2, 2])

If you know a more straightforward way of doing this,
I'll be glad to know...

Cheers :)
Ernest



More information about the NumPy-Discussion mailing list