# Does calling random.normal on an array of values add noise?

I saw this pattern in someone’s code:

``````import numpy as np
# Create array
xx = np.linspace(0.0, 100.0, num=100)
xx = np.random.normal(xx)
``````

and it seems to add some noise to each value of the array, but I can’t find any documentation for this. What’s happening? What determines the properties (i.e. scaling) of the noise? Is the given value being treated as the mean (i.e. the `loc` parameter) of each sampling from the `normal` distribution?

I’d also be very curious to know why this behavior doesn’t seem to be covered in the documentation.

I don’t see it documented either, but many numpy functions that take an ndarray will operate on it element-wise. Anyway, you can easily verify that when passing it an array it call `numpy.random.normal` for each element on the array using that element’s value as the mean and returns an array:

``````In : xx = numpy.array([1, 10, 100, 1000])

In : numpy.random.normal(xx)
Out:
array([  9.45865328e-01,   1.11542264e+01,   9.88601302e+01,
1.00120448e+03])
``````

It appears that it is using the default value of 1.0 for the scale. You can override this though:

``````In : numpy.random.normal(xx, 10)
Out: array([    8.92500743,    -5.66508088,    97.33440273,  1003.37940455])

In : numpy.random.normal(xx, 100)
Out: array([ -75.13092966,  -47.0841671 ,  154.12913986,  816.3126146 ])
``````