Numpy中的三个常用正态分布函数randn,standard_normal, normal的区别
摘要:randn,standard_normal, normal这三个函数都可以返回随机正态分布的数组, 它们是从特殊到一般的形式。normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。
这三个函数都可以返回随机正态分布(高斯Gaussian 分布)的数组,都可以从numpy.random中导出,先看三个函数的参数方式:
randn: randn
(d0, d1, ..., dn),
返回shape为(d0, d1, ..., dn)的标准正态分布(均值为0,标准差为1)的数组
standard_normal: standard_normal
(size=None),
跟randn一样,也是返回标准正态分布的数组,不同的是它的shape由size参数指定,对于多维数组,size必须是元组形式;
normal: normal
(loc=0.0, scale=1.0, size=None),
更一般的形式,返回均值为loc,标准差为scale的正态分布,shape由size参数决定。
可以看出randn,standard_normal, normal三个函数是从特殊到一般, randn是standard_normal的便捷写法,省去了需要将数组shape封装到size参数中,但这个函数的命名和参数方式是从MATLAB中引过来的,跟Numpy的其他函数如zeros,ones参数方式也不同统一,不建议使用。
randn和standard_normal都只能返回标准正态分布,对于更一般的正态分布Ν(μ, σ2), 需要使用
σ * np.random.randn(...) + μ
normal函数可以直接给出均值和标准差(loc表示均值,scale表示标准差),normal函数默认情况下也是返回标准正态分布(loc=0.0, scale=1.0),
考虑到normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。