1. 程式人生 > >Numpy中的三個常用正態分佈函式randn,standard_normal, normal的區別

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這個函式更加通用,且名字好記,建議平時使用這個函式生成正態分佈。

&n