簡體   English   中英

numpy中隨機正態分布矩陣

[英]A random normally distributed matrix in numpy

我想生成矩陣M,其元素M(i,j)來自標准正態分布。 一個簡單的方法是,

import numpy as np

A = [ [np.random.normal() for i in range(3)]    for j in range(3) ]
A = np.array(A)
print(A)

[[-0.12409887  0.86569787 -1.62461893]
 [ 0.30234536  0.47554092 -1.41780764]
 [ 0.44443707 -0.76518672 -1.40276347]]

但是,我正在玩numpy並遇到另一個“解決方案”:

import numpy as np
import numpy.matlib as npm

A = np.random.normal(npm.zeros((3, 3)), npm.ones((3, 3)))
print(A)

[[ 1.36542538 -0.40676747  0.51832243]
 [ 1.94915748 -0.86427391 -0.47288974]
 [ 1.9303462  -1.26666448 -0.50629403]]

我讀了numpy.random.normal文檔 ,它說它沒有說明當傳遞矩陣而不是單個值時這個函數是如何工作的。 我懷疑在第二個“解決方案”中,我可能會從多元正態分布中得出結論。 但這不可能是真的,因為輸入參數都具有相同的維度(協方差應該是矩陣,而mean是一個向量)。 不確定第二個代碼生成了什么。

做你想做的事情的目的是

A = np.random.normal(0, 1, (3, 3))

這是可選的size參數,它告訴numpy你想要返回什么形狀(在這種情況下為3乘3)。

你的第二種方式也有效,因為文檔說明了

如果size為None(默認值),則如果loc和scale都是標量,則返回單個值。 否則,繪制np.broadcast(loc,scale).size樣本。

因此沒有多變量分布且沒有相關性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM