使用numpy函数numpy.random.multivariate_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,)
上面的函数从一个多元高斯函数中输出一个“draw”,形状为(1000,)
(因为协方差矩阵是1000,1000)
)。
我想要200张。怎么做到的?我会创建一个列表理解,但我不知道如何创建迭代。
编辑:有区别吗
draw_A = np.random.rand(1000, 1000, 200)
以及
draw_B = [np.random.multivariate_normal(mean, covariance) for i in range(200)]
是吗?
是的,draw_B
是一个列表,但它们都是200个独立的绘图形状吗?
你注意到docstring中的
size
参数了吗?例如,此调用从三维分布生成5个示例:
对编辑问题的答复:
np.random.rand(d0, d1, d2)
从[0,1]上的单变量均匀分布中进行d0*d1*d2
随机抽取,并以(d0, d1, d2)
形状的数组返回它们。np.random.multivariate_normal(mean, cov, size=n)
,其中mean
是具有形状(m,)
的数组,cov
是具有形状(m, m)
的数组,使n
从多变量正态分布中绘制,并将它们作为具有形状(n, m)
的数组的行返回。列表理解draw_B
还从多元正态分布中抽取样本,每个函数调用一个样本,并将样本放入列表而不是数组中。相关问题 更多 >
编程相关推荐