[Numpy-discussion] Slices from an index list

Warren Weckesser warren.weckesser@enthought....
Wed Apr 11 06:42:44 CDT 2012


On Wed, Apr 11, 2012 at 4:28 AM, Mads Ipsen <madsipsen@gmail.com> wrote:

>  Hi,
>
> Suppose a have an array of indices, say
>
>   indices = [0,1,2,3,5,7,8,9,10,12,13,14]
>
> Then the following slices
>
>   a = slice(0,4)
>   b = slice(4,5)
>   c = slice(5,9)
>   d = slice(9,12)
>
> provide information about all the consecutive parts of the index list.
> Given the list of indices, is there some nifty numpy function that can
> generate the above slices for me (or their start and stop values)?
>
>
Here's one way you could do it:

In [43]: indices = [0,1,2,3,5,7,8,9,10,12,13,14]

In [44]: jumps = where(diff(indices) != 1)[0] + 1

In [45]: starts = hstack((0, jumps))

In [46]: ends = hstack((jumps, len(indices)))

In [47]: slices = [slice(start, end) for start, end in zip(starts, ends)]

In [48]: slices
Out[48]: [slice(0, 4, None), slice(4, 5, None), slice(5, 9, None), slice(9,
12, None)]


Warren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120411/8888998d/attachment.html 


More information about the NumPy-Discussion mailing list