我想生成一个矩阵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]]
我读了
document
对于
numpy.random.normal
它说,它并没有说明当传递矩阵而不是单个值时,这个函数是如何工作的。我怀疑在第二个“解”中,我可能是从多元正态分布中得出的。但这不可能是真的,因为输入参数都有相同的维(协方差应该是一个矩阵,平均值是一个向量)。不确定第二个代码正在生成什么。