Numpy中的三个常用正态分布函数randn,standard_normal, normal的区别


摘要:randn,standard_normal, normal这三个函数都可以返回随机正态分布的数组, 它们是从特殊到一般的形式。σ">μ">normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。

这三个函数都可以返回随机正态分布(高斯Gaussian 分布)的数组,都可以从numpy.random中导出,先看三个函数的参数方式:

randn: randn(d0d1...dn),

返回shape为(d0d1...dn)的标准正态分布(均值为0,标准差为1)的数组

standard_normal: standard_normal(size=None),

跟randn一样,也是返回标准正态分布的数组,不同的是它的shape由size参数指定,对于多维数组,size必须是元组形式;

normal:  normal(loc=0.0scale=1.0size=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.0scale=1.0),

σ">μ">考虑到normal这个函数更加通用,且名字好记,建议平时使用这个函数生成正态分布。