Python 使用numpy.random.multivariable_normal(平均值,cov[,大小])绘制多个样本
使用numpy函数Python 使用numpy.random.multivariable_normal(平均值,cov[,大小])绘制多个样本,python,arrays,numpy,random,Python,Arrays,Numpy,Random,使用numpy函数numpy.random.multivariable\u normal(),如果我给出平均值和协方差,我就能够从多元高斯分布中抽取随机样本 例如, import numpy as np mean = np.zeros(1000) # a zero array shaped (1000,) covariance = np.random.rand(1000, 1000) # a matrix of random values shaped (1000,1000) draw =
numpy.random.multivariable\u normal()
,如果我给出平均值和协方差,我就能够从多元高斯分布中抽取随机样本
例如,
import numpy as np
mean = np.zeros(1000) # a zero array shaped (1000,)
covariance = np.random.rand(1000, 1000)
# a matrix of random values shaped (1000,1000)
draw = np.random.multivariate_normal(mean, covariance)
# this outputs one "draw" of a multivariate norm, shaped (1000,)
上述函数从多元高斯形状的(1000,)
(协方差矩阵的形状为10001000)
)输出一个“绘图”
我想要200张。如何做到这一点?我会创建一个列表,但我不知道如何创建迭代
编辑:两者之间有区别吗
draw_A = np.random.rand(1000, 1000, 200)
及
?
是的,
draw\u B
是一个列表,但是它们都是200个独立的绘图形状10001000)
?您注意到列表中的size
参数了吗
例如,此调用从三维分布生成5个样本:
In [22]: np.random.multivariate_normal(np.zeros(3), np.eye(3), size=5)
Out[22]:
array([[ 1.08534253, 0.70492174, -0.8625333 ],
[ 0.16955737, -0.89453284, 0.8347796 ],
[ 0.49506717, -1.18087912, -0.89118919],
[-0.97837406, -0.42304268, 0.4326744 ],
[-1.18836816, 1.33389231, 0.23616035]])
对问题的答复:
从[0,1]上的单变量均匀分布中随机抽取np.random.rand(d0,d1,d2)
,并以形状d0*d1*d2
的数组返回它们(d0,d1,d2)
,其中np.random.multivariable\u normal(mean,cov,size=n)
是一个具有形状mean
的数组,(m,)
是一个具有形状cov
的数组,使(m,m)
从多元正态分布中提取,并将其作为具有形状n
。您的列表理解(n,m)的数组的行返回
还从多元正态分布中提取样本,每个函数调用一个样本,它将样本放入列表而不是数组中draw_B
draw\u A
是否与draw\u B
相同?
In [22]: np.random.multivariate_normal(np.zeros(3), np.eye(3), size=5)
Out[22]:
array([[ 1.08534253, 0.70492174, -0.8625333 ],
[ 0.16955737, -0.89453284, 0.8347796 ],
[ 0.49506717, -1.18087912, -0.89118919],
[-0.97837406, -0.42304268, 0.4326744 ],
[-1.18836816, 1.33389231, 0.23616035]])