numpy.random.normal与numpy.random.randn的区别与联系
先说结论:
numpy.random.normal
对应的是 正态分布
,numpy.random.randn
对应的是标准正态分布
,所以 numpy.random.randn
是 numpy.random.normal
的一个特例。
1. numpy.random.normal
从正态(高斯)分布中抽取随机样本。
random.normal(loc=0.0, scale=1.0, size=None)
正态分布的概率密度函数最早由棣莫弗(De Moivre)推导得出,200 年后由高斯(Gauss)和拉普拉斯(Laplace)各自独立推导出来。由于其特有的形状特征,该函数常被称为钟形曲线。
正态分布现象在自然界中经常出现。例如,它描述了受大量微小且随机干扰影响的样本的常见分布情况,每个干扰都有其独特的分布特征。
参数:
loc: 浮点数或浮点数数组
分布的“中心”值(均值)
scale: 浮点数或浮点数数组
分布的标准差(离散程度或“宽度”)。必须为非负值。
size: 整数或整数元组(可选)
输出形状。如果给定的形状为 (m, n, k)
,那么会抽取 m * n * k
个样本。如果 size
为 None
(默认值),且 loc
和 scale
都是标量,则返回一个值。否则,会抽取 np.broadcast(loc, scale).size
个样本。
返回值:
输出一个 ndarray
或 标量 (scalar)
从参数化正态分布中抽取样本。
笔记:
高斯分布的概率密度是:
其中,μ是均值,σ是标准差,标准差的平方σ2叫做方差。
验证均值和标准差
展示样本的直方图,以及概率密度函数
具有均值为 3、标准差为 2.5 的正态分布的 2×4 样本数组
2. numpy.random.randn
random.randn(d0, d1, ..., dn)
从 标准正态
分布中返回一个(或多个)样本。
如果提供了正整数类型的参数,randn
函数会生成一个形状为(d0, d1, ..., dn)
的数组,其中包含从均值为 0、方差为 1 的单变量正态分布中抽取的随机浮点数。如果未提供任何参数,则会返回从该分布中随机抽取的一个浮点数。
参数:
d0, d1, …, dn:整数,可选
返回数组的维度必须为非负值。如果未给出任何参数,则返回一个 Python 浮点数。
返回值:
Z:ndarray
或 float
一个由标准正态分布的浮点样本构成的(d0,d1,...,dn)
形状的数组,或者如果未提供参数则为单个此类浮点数。
对于具有均值为 μ
、标准差为 σ
的正态分布的随机样本,使用以下公式:
σ * np.random.randn(...) + μ