为什么numpy random normal会生成错误的平均值错误的随机矩阵?

时间:2017-06-23 06:13:59

标签: python numpy

我是numpy的新手,最近我对random.normal方法感到非常困惑 我想生成一个2乘2的矩阵,其中均值为零所以我写了以下内容,但是,你可以看到abs(0 - np.mean(b))< 0.01行输出错误,为什么?我希望它输出True。

>>> import numpy as np
>>> b = np.random.normal(0.0, 1.0, (2,2))
>>> b
array([[-1.44446094, -0.3655891 ],
   [-1.15680584, -0.56890335]])
>>> abs(0 - np.mean(b)) < 0.01
False

2 个答案:

答案 0 :(得分:0)

从正态分布中采样并不能保证样本的均值与正态分布的均值相同。如果你采用无数个样本,它应该具有相同的均值(通过中心极限定理),但显然,你不能真正采用无数个样本。

答案 1 :(得分:0)

如果您需要生成器,则需要手动将mean和std修复为预期值:

def normal_gen(m, s, shape=(2,2)):
    b = np.random.normal(0, s, shape)
    b = (b - np.mean(b)) * (s / np.std(b)) + m
    return b