2

有没有通用的解决方案?您必须将它们相乘,但很难实现。

对于二维情况,您可以使用表示单个正态分布的两个向量的外积。

4

2 回答 2

3

一般解决方案涉及方差/协方差矩阵的 Cholesky 分解。Cholesky 分解可通过numpy在 Python 中使用。

于 2016-11-05T22:34:13.797 回答
0

我找到了一个可能的解决方案并在 2d 案例中进行了测试。看起来不错,但我会在更多情况下对其进行测试:

def normal_nd(*priors):
    # Trivial case
    if len(priors) == 1:
        return priors

    # General case
    shape = []
    for item in priors:
        shape.append(len(item))
    n = np.ones(shape)

    for idx, _ in np.ndenumerate(n):
        for ax, element in enumerate(idx):
            n[idx] *= priors[ax][element]

    return n

二维案例图

编辑:我也在一般情况下对其进行了测试,这似乎是一个正确的解决方案!:)

于 2016-11-05T16:12:08.923 回答