On 11/04/2012 13:42, Warren Weckesser wrote:


On Wed, Apr 11, 2012 at 4:28 AM, Mads Ipsen <madsip...@gmail.com <mailto:madsip...@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



_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
Thanks - very helpful!

--
+-----------------------------------------------------+
| Mads Ipsen                                          |
+----------------------+------------------------------+
| Gåsebæksvej 7, 4. tv |                              |
| DK-2500 Valby        | phone:          +45-29716388 |
| Denmark              | email:  mads.ip...@gmail.com |
+----------------------+------------------------------+


_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to