[Numpy-discussion] efficient way to do this?

Robert Kern robert.kern at gmail.com
Mon Sep 22 11:13:19 EDT 2008


On Mon, Sep 22, 2008 at 09:41, John Hunter <jdh2358 at gmail.com> wrote:
> I have a an array of indices into a larger array where some condition
> is satisfied.  I want to create a larger set of indices which *mark*
> all the indicies following the condition over some Nmark length
> window.  In code:
>
>    import numpy as np
>
>    N = 1000
>    Nmark = 20
>    ind = np.nonzero(np.random.rand(N)<0.01)[0]
>
>
>    marked = np.zeros(N, bool)
>    for i in ind:
>        marked[i:i+Nmark] = True
>
> I am going to have to do this over many arrays, and so I want to do it
> efficiently.  Is there a way to do the above more efficiently, eg w/o
> the loop.

marked[ind + np.arange(Nmark)] = True

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
 -- Umberto Eco



More information about the NumPy-Discussion mailing list