[Numpy-discussion] Question about numpy.random, especially .poisson

Robert Kern robert.kern at gmail.com
Mon Apr 18 22:58:06 EDT 2011


On Mon, Apr 18, 2011 at 17:08, Russell E. Owen <rowen at uw.edu> wrote:
> I stumbled across code that looks like this:
>
> imageArr = # a 2-d array of floats
> noiseArr = numpy.random.poisson(imageArr)
>
> This works fine in numpy 1.5.1 and seems to do what I would hope: return
> an array of random ints whose "expectation of interval" is set by the
> corresponding element of the input array. Very nice!
>
> However, I can't find any documentation supporting this usage. The
> standard help says:
>
>   poisson(lam=1.0, size=None)
>
>    Draw samples from a Poisson distribution.
>
>    The Poisson distribution is the limit of the Binomial
>    distribution for large N.
>
>    Parameters
>    ----------
>    lam : float
>        Expectation of interval, should be >= 0.
>    size : int or tuple of ints, optional
>        Output shape. If the given shape is, e.g., ``(m, n, k)``, then
>        ``m * n * k`` samples are drawn.
>
> Which suggest that Iam must be a scalar.
>
> So... is the usage of passing in an array for Iam actually
> supported/safe to use?

Yes, it is safe. All of the univariate distribution parameters will
broadcast against each other as they would with ufuncs. I don't think
we do it for multinomial and a couple of the other ones where the
semantics would have made my head hurt.

> And is there some general rule I could have used to predict that?

Just the one I stated, which is limited to numpy.random. It might even
be documented somewhere. Unfortunately, most of the individual methods
had their parameters documented before this capability was added.

-- 
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