randn(d0, d1, …, dn)
从标准正态分布返回一个或多个样本。
如果提供了正的int
参数,randn
生成一个形状为(d0, d1, …, dn)
的数组,其中填充了从均值为0
且方差为1
的正态分布中采样的随机浮点。如果没有提供参数,则返回一个浮点数。
欲得到均值为μ且方差为σ的正太分布则对返回值ret
进行简单变化ret=ret*sigma+mu
即可。
# -*- coding: utf-8 -*-
import numpy as np
import PIL.Image as Image
import matplotlib.pyplot as pyp
pyp.figure(figsize=(15, 3), dpi=96)
SHAPE = (28, 28)
ROW, COL, index = 1, 4, 0
POINT_SIZE, FONT_SIZE = 5, 10
img = np.random.randn(*SHAPE)
flatted = np.reshape(img, (-1,))
size_ = min(len(flatted), 255)
mu, sigma = 2, .25
index += 1
x_0, x_1, x_2, y = [], [], [], []
for i in range(size_):
x_0.append(flatted[i])
x_1.append(flatted[i]+mu) # flatted=flatted+mu
x_2.append(flatted[i]*sigma+mu) # flatted=flatted*sigma+mu
y.append(i/size_)
pyp.subplot(ROW, COL, index)
pyp.legend(
(
pyp.scatter(x_0, y, s=POINT_SIZE, c='#ff8800'),
pyp.scatter(x_1, y, s=POINT_SIZE, c='#ff0088'),
pyp.scatter(x_2, y, s=POINT_SIZE, c='#0088ff')
),
(u'Standard', u'μ=%.2f' % mu, u'μ=%.2f and σ=%.2f' % (mu, sigma)),
loc=2
)
pyp.title('Numpy: Gaussian distribution ', fontsize=FONT_SIZE)
index += 1
pyp.subplot(ROW, COL, index)
pyp.imshow(Image.fromarray((img)*255))
pyp.axis('off')
index += 1
pyp.subplot(ROW, COL, index)
pyp.imshow(Image.fromarray((img+mu)*255))
pyp.axis('off')
index += 1
pyp.subplot(ROW, COL, index)
pyp.imshow(Image.fromarray((img+mu)*sigma*255))
pyp.axis('off')
pyp.show()