
22 Sep
2006
22 Sep
'06
2:02 a.m.
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