[Numpy-discussion] Putmask/take ?

Stefan van der Walt stefan at sun.ac.za
Fri Sep 22 03:02:51 EDT 2006


Hi P.,

On Thu, Sep 21, 2006 at 07:40:39PM -0400, PGM wrote:

> I'm running into the following problem with putmask on take.
> 
> >>> import numpy
> >>> x = N.arange(12.)
> >>> m = [1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]
> >>> i = N.nonzero(m)[0]
> >>> w = N.array([-1, -2, -3, -4.])
> >>> x.putmask(w,m)
> >>> x.take(i)
> >>> N.allclose(x.take(i),w)

According to the putmask docstring:

    a.putmask(values, mask) sets a.flat[n] = v[n] for each n where
    mask.flat[n] is true. v can be scalar.

This would mean that 'w' is not of the right length.  Would the
following do what you want?

import numpy as N
m = N.array([1,0,0,0,0,0,1,0,0,1,0,1],dtype=bool)
w = N.array([-1,-2,-3,-4])
x[m] = w

Regards
Stéfan




More information about the NumPy-Discussion mailing list