[Numpy-discussion] efficient use of numpy.where() and .any()

Robert Kern robert.kern@gmail....
Mon Apr 23 11:23:49 CDT 2007

Mark.Miller wrote:
> Pierre GM wrote:

>> a[a<0] = numpy.random.normal(0,1)
> This is a neat construct that I didn't realize was possible.  However, 
> it has the undesirable (in my case) effect of placing a single new 
> random number in each locations where a<0.  While this could work, I 
> ideally need a different random number chosen for each replaced value. 
> Does that make sense?

Certainly. How about this?

mask = (a<0)
a[mask] = numpy.random.normal(0, 1, size=mask.sum())

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