简体   繁体   中英

Using numpy.random

I'm having a little bit of trouble using numpy.random.normal. At the bottom of this link ( http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html ) there's a graph which shows standard deviations. I'm a little confused about this, because it doesn't look like 0.1, 0.2, 0.3 etc. standard deviations. It also doesn't look like 1, 2, or 3 standard deviations.

What I'm trying to do is to add noise to an image at specific standard deviations. However, the results I get are honestly pretty weird. My code (in Python) is shown below:

poisson = float((raw_input("Noise standard deviation: ")))
.
.
.
name = t+'PHOTO'+s+str(i)+'.fits'

    im = pf.open(name)
    isinstance(im,list)
    im0 = im[0]
    poissonNoise = np.random.normal(0,poisson/1000, im0.data.shape).astype(float)
    test = im0.data + poissonNoise
    im0.data = test
    stringee = 'NOISE'
    pf.writeto(stringee+str(poisson)+name, data=test, clobber=True, header=im0.header)
print poisson

If you notice, I divide "poisson" by 1000 in order to get meaningful results. So what is the real value of the standard deviation, and how do I use it? All I want to do is to be able to input 1, 2, 3, etc. standard deviations and create that much noise.

It seems you're mixing things together. On the figure of discussion in the question

在此输入图像描述

X axis is just X values not Standard Deviations . Remember that, for one distribution (here, Normal ) there is only one single value standard deviation which can be computed easily, numpy.std .

BTW, your code is not quiet Python code. What is this: isinstance(im,list) for? Also remember that, indentation is heart of Python.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM