我使用Python的numpy.random
模塊中的randn
和normal
函數。這些函數與我在http://docs.scipy.org手冊(他們都涉及高斯分佈)中讀到的內容非常相似,但是我應該注意哪些細微差別?如果是這樣,在什麼情況下我會更好地使用特定功能?randn和普通Python之間的區別
回答
randn
似乎給出了一些標準化的正態分佈(均值0和方差1)的分佈。 normal
需要更多參數才能獲得更多控制。所以rand
似乎只是一個方便的功能
他們最後調用了相同的C函數('rk_gauss')。我認爲'randn'的存在主要是爲了讓MATLAB轉換開心。 MATLAB'randn'似乎或多或少是相同的。 –
啊,他們在什麼文件中定義?我認爲情況確實如此,從源頭上看起來有點不對勁,但我無法找到它。 – M4rtini
'numpy/random/mtrand/distributions.c' –
我是一個統計學家有時代碼,而不是反之亦然,所以這是我可以用一些準確的答案。
看着你在你的問題鏈接的文檔,我還是要強調一些關鍵的不同:
正常:
numpy.random.normal(loc=0.0, scale=1.0, size=None)
# Draw random samples from a normal (Gaussian) distribution.
# Parameters :
# loc : float -- Mean (「centre」) of the distribution.
# scale : float -- Standard deviation (spread or 「width」) of the distribution.
# size : tuple of ints -- Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn.
因此,在這種情況下,你產生GENERIC正態分佈(關於後面的含義的更多細節)。
randn:
numpy.random.randn(d0, d1, ..., dn)
# Return a sample (or samples) from the 「standard normal」 distribution.
# Parameters :
# d0, d1, ..., dn : int, optional -- The dimensions of the returned array, should be all positive. If no argument is given a single Python float is returned.
# Returns :
# Z : ndarray or float -- A (d0, d1, ..., dn)-shaped array of floating-point samples from the standard normal distribution, or a single such float if no parameters were supplied.
在這種情況下,你產生具體正態分佈,標準發佈。
現在的一些數學,這是真正需要得到你的問題的心臟的:
一個正常的分佈是其中的值更可能附近的平均值發生。本質上有一堆這種情況。例如,6月份達拉斯的平均高溫,比方說95°F,一年內可能達到100甚至105個平均值,但更通常的是接近95或97.同樣,它可能達到最低溫度80,但85或90更有可能。
因此,它與統一分配(滾動一個誠實的六面模具)有根本的區別。
甲標準正態分佈只是一個普通的分佈,其中平均值爲0和方差(用於變化的數學術語)爲1
所以,
numpy.random.normal(size= (10, 10))
與寫作完全相同
numpy.random.randn(10, 10)
,因爲numpy.random.normal
的值(loc = 0,scale = 1)默認實際上是標準分佈。
使事情更混亂,因爲numpy random documentation狀態:
sigma * np.random.randn(...) + mu
相同
np.random.normal(loc= mu, scale= sigma, ...)
*最後說明一點:我使用的術語方差數學方法描述的變化。有些人說標準偏差。方差簡單地等於標準偏差的平方。由於標準分佈的方差= 1,在這種情況下的標準分佈,variance == standard deviation
。
您的回答看起來很有趣。但是,如果測量結果是某種東西的速度,如何產生噪音?噪音應該只包含正值。?!如果是這樣的話,正態分佈不能產生正值,對嗎? – Spider
我不確定我在追蹤@Spider。如果我關注你,你也在問價值如何可能低於平均水平。標準差的定義是平均值附近的變化。也就是說,無論是在上面還是下面。沒有足夠的空間進入它,但看看http://en.wikipedia.org/wiki/Standard_deviation或http://en.wikipedia.org/wiki/Normal_distribution –
哦,現在我明白你的意思了:是的,一個「速度」(不是速度,這是一個向量)只能有正數。是的,正態分佈允許負數。因此,正如你的直覺已經告訴你的那樣,速度並不遵循正態分佈。還有許多其他類型的分佈,如泊松或二項式。 –
- 1. 普通語言和普通語法之間的區別
- 2. 識別普通文件夾和「。」/「..」文件夾之間的區別
- 3. 休眠時JTA,JPA和普通JDBC之間的區別
- 4. 抽象類擴展和普通類之間的區別延伸
- 5. 靜態嵌套類和普通類之間的區別
- 6. pagebookview和普通視圖之間的區別
- 7. 表面和紋理之間的區別(SDL /普通)
- 8. Mandrill - global_merge_vars和普通merge_vars之間的區別
- 9. 製片人和普通演員之間有什麼區別?
- 10. 如何區分標誌枚舉和普通枚舉之間的區別?
- 11. python中的[]和[,,]之間的區別
- 12. android sha224和python之間的區別sha224
- 13. Python - os.access和os.path.exists之間的區別?
- 14. python:!=和<>之間的區別?
- 15. Python中cStringIO.StringIO.write和String.StringIO.write之間的區別
- 16. Python - docopt和argparse之間的區別
- 17. ruby和python之間的語法區別?
- 18. basetring和types.StringType之間的python區別?
- 19. python pygir-ctypes和gi.repository之間的區別
- 20. memcache和python字典之間的區別
- 21. Python中dir()和locals()之間的區別?
- 22. Python 3.5 - '//'和'int()'之間的區別
- 23. NodeJS和Python散列之間的區別
- 24. Smalltalk和python之間的區別?
- 25. Python:!=和「不是」之間的區別
- 26. Python:`is`和`==`之間的區別?
- 27. python tkinter spinbox和optionmenu之間的區別
- 28. [:] = b和a = b [:]之間的區別? (Python)
- 29. 普通網絡託管與SaaS或PaaS之間的區別
- 30. int CompareTo方法與普通If條件之間的區別?
他們似乎不同於我。 '正常':從正態(高斯)分佈中抽取隨機樣本。 'randn':用「標準正態分佈」的數據返回一個隨機矩陣 – hughdbrown
@hughdbrown同樣的分佈,略有不同的使用方式。 –