【发布时间】:2021-03-22 22:39:50
【问题描述】:
假设我想从多个具有相同协方差矩阵(恒等式)但均值不同的正态分布中采样 10 次,这些正态分布存储为以下矩阵的行:
means = np.array([[1, 5, 2],
[6, 2, 7],
[1, 8, 2]])
我怎样才能以最有效的方式做到这一点(即避免循环)
我试过这样:
scipy.stats.multivariate_normal(means, np.eye(2)).rvs(10)
和
np.random.multivariate_normal(means, np.eye(2))
但是他们抛出一个错误,说 mean 应该是 1D。
慢示例
import scipy
np.r_[[scipy.stats.multivariate_normal(means[i, :], np.eye(3)).rvs() for i in range(len(means))]]
【问题讨论】:
-
使用
for循环,或者更好的列表理解。 -
在这种特殊情况下,不是一个样本就像将这个均值矩阵添加到一个 3x3 正常 N(0,1) 矩阵吗?
-
让我们从 - 你期望什么形状的输出开始?因为根本不清楚你想从中得到什么。
-
我已经编辑了一个慢示例!
-
我认为这个例子行不通
标签: python numpy scipy distribution normal-distribution