I saw this pattern in someone’s code:

```
import numpy as np
# Create array
xx = np.linspace(0.0, 100.0, num=100)
# Add Noise
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.

Best answer

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 [9]: xx = numpy.array([1, 10, 100, 1000])
In [10]: numpy.random.normal(xx)
Out[10]:
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 [12]: numpy.random.normal(xx, 10)
Out[12]: array([ 8.92500743, -5.66508088, 97.33440273, 1003.37940455])
In [13]: numpy.random.normal(xx, 100)
Out[13]: array([ -75.13092966, -47.0841671 , 154.12913986, 816.3126146 ])
```