从python中的矩阵正态分布中随机抽取样本

时间:2017-02-06 22:49:30

标签: python numpy normal-distribution

有没有办法使用python从矩阵正态分布(https://en.wikipedia.org/wiki/Matrix_normal_distribution#Drawing_values_from_the_distribution)中随机抽取样本? Numpy具有从一维正态分布和多元正态分布中绘制的功能,但我无法在矩阵正态分布上找到任何东西。感谢。

2 个答案:

答案 0 :(得分:5)

从您链接的维基百科页面:

  

矩阵法线以下列方式与多元正态分布相关:

     

\mathbf{X} \sim \mathcal{MN}_{n\times p}(\mathbf{M}, \mathbf{U}, \mathbf{V}),

     

当且仅当

     

\mathrm{vec}(\mathbf{X}) \sim \mathcal{N}_{np}(\mathrm{vec}(\mathbf{M}), \mathbf{V} \otimes \mathbf{U})

转换为numpy,应该是

numpy.random.multivariate_normal(M.ravel(), np.kron(V, U)).reshape(M.shape)

答案 1 :(得分:0)

numpy.random.normal()可以绘制二维矩阵,只要您指定如下尺寸即可:

numpy.random.normal(loc = mean, scale = standard deviation, size = (m,n))