Python:来自多变量正态分布的样本,具有N个均值和相同的协方差矩阵

2024-05-14 22:31:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我想从具有相同协方差矩阵(恒等式)但不同均值的多个正态分布中采样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))

但是他们抛出了一个错误,说平均值应该是1D

慢例子

import scipy
np.r_[[scipy.stats.multivariate_normal(means[i, :], np.eye(3)).rvs() for i in range(len(means))]]

Tags: statsnp方式矩阵scipyarraymeansmultivariate
1条回答
网友
1楼 · 发布于 2024-05-14 22:31:33

协方差矩阵表明样本是独立的。您可以立即对其进行采样:

num_samples = 10
flat_means = means.ravel()

# build block covariance matrix
cov = np.eye(3)
block_cov = np.kron(np.eye(3), cov)

out = np.random.multivariate_normal(flat_means, cov=block_cov, size=num_samples)

out = out.reshape((-1,) + means.shape)

相关问题 更多 >

    热门问题