gpt4 book ai didi

python - 使用 numpy.random.multivariate_normal(mean, cov[, size]) 绘制多个样本

转载 作者:行者123 更新时间:2023-11-30 23:01:30 24 4
gpt4 key购买 nike

使用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,)

上述函数从多元高斯函数中输出一个“绘图”,形状为 (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个独立的绘图,形状为1000,1000)

最佳答案

您是否注意到 docstring 中的 size 参数? ?

例如,此调用从 3 维分布生成 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]])
<小时/>

对已编辑问题的回复:

  • np.random.rand(d0, d1, d2)单变量中随机抽取d0*d1*d2在 [0, 1) 上均匀分布,并以形状为 (d0, d1, d2) 的数组形式返回它们。
  • np.random.multivariate_normal(mean, cov, size=n),其中 mean 是形状为 (m,) 的数组cov 是一个形状为 (m, m) 的数组,使 n 从多元正态分布中绘制,并将它们作为行返回形状为 (n, m) 的数组。您的列表推导式 draw_B 还会从多元正态分布中抽取样本,每个函数调用一个样本,并将样本放入列表而不是数组中。

关于python - 使用 numpy.random.multivariate_normal(mean, cov[, size]) 绘制多个样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com