[Numpy-discussion] Find contiguous sequences of booleans in arrays

Charles R Harris charlesr.harris at gmail.com
Mon Sep 17 13:34:48 EDT 2007


Hi Kurdt,

On 9/17/07, Kurdt Bane <kurdt.bane at gmail.com> wrote:
>
> Hi to all,
>
> I've got an 1-D array of bools and I'd like to find the length of the
> first contiguous sequence of True values, starting from position [0] of the
> array.
> (That's equivalent to find the position of the first occurrence of False
> in the array).
> The problem is trivial, but I was wondering: what's the best (fastest,
> cleanest, most pythonesque) way to do it in numpy? And what if I want to get
> a list of all the contiguous sequences of True values, above a given
> threshold?


You can find the start of all runs after the first by

In [1]: a = array([1,1,1,0,1,1,0,0,1], dtype=bool)

In [2]: s = arange(1,len(a))[a[0:-1] ^ a[1:]]

In [3]: s
Out[3]: array([3, 4, 6, 8])

i.e. The first run is a[0:3], the second a[3:4], etc., and the runs
alternate between true and false.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070917/d7eec32b/attachment.html>


More information about the NumPy-Discussion mailing list