8 Sep
2010
8 Sep
'10
7:21 p.m.
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