numpy.random.normal
-
用例:
numpy.random.normal(loc=0.0, scale=1.0, size=None) -
功能:
从正态(高斯)分布中抽取随机样本。
棣莫佛第一次提出正态分布的概率密度函数(由于其外形形似铃铛,亦称为钟形曲线),在其后200年,高斯和拉普拉斯也分别发现了正态分布的概率密度函数。自然界中有许多符合正态分布的案例。例如,它可以描述样本受大量微小随机扰动影响的常见分布,其中,每个扰动都有自己独特的分布。 -
参数:
变量名 | 数据类型 | 功能 |
---|---|---|
loc | 浮点型数据或者浮点型数据组成的数组 | 分布的均值(中心) |
scale | 浮点型数据或者浮点型数据组成的数组 | 分布的标准差(宽度) |
size | 整数或者整数组成的元组,可选参数 | 输出值的维度。如果给定的维度为(m, n, k) ,那么就从分布中抽取m * n * k 个样本。如果size为None(默认值)并且loc 和scale 均为标量,那么就会返回一个值。否则会返回np.broadcast(loc, scale).size 个值 |
- 返回值:
变量名 | 数据类型 | 功能 |
---|---|---|
out | n维数组或标量 | 从含参的正态分布中抽取的随机样本 |
- 备注:
高斯分布的概率密度函数为
p
(
x
)
=
1
2
π
σ
2
e
−
(
x
−
μ
)
2
2
σ
2
p(x)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
p(x)=2πσ21e−2σ2(x−μ)2其中
μ
\mu
μ代表均值,
σ
\sigma
σ代表标准差,标准差的平方
σ
2
\sigma^2
σ2称作方差。 函数在均值位置点取到峰值,当标准差增大的时候,其宽度也会增加(函数在
x
−
σ
x-\sigma
x−σ到
x
+
σ
x+\sigma
x+σ之间的面积为其总面积的0.607倍)。这意味着numpy.random.normal
更有可能返回靠近均值的样本而不是那些远离均值的样本。
- 示例:
从分布中抽取样本:
import numpy as np
mu, sigma = 0, 0.1 # 均值和标准差
s = np.random.normal(mu, sigma, 1000)
检验均值和方差:
abs(mu - np.mean(s)) < 0.01
True
abs(sigma - np.std(s, ddof=1)) < 0.01
True
利用直方图对样本进行可视化,并绘制其概率密度函数:
import matplotlib.pyplot as plt
count, bins, ignored = plt.hist(s, 30, normed=True, color='b')
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2) ), linewidth=2, color='r')
plt.show()