从单个正态分布创建n维正态分布(在python中)

2024-04-19 18:17:05 发布

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

有没有一个通用的解决办法?你必须把它们成倍增加,但很难实现。在

对于二维情况,您可以使用代表单个正态分布的两个向量的outer product。在


Tags: 情况代表product向量outer正态分布解决办法
2条回答

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

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

2d case plot

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

通解涉及Cholesky decomposition of the variance/covariance matrix。Cholesky分解在Python中通过numpy提供。在

相关问题 更多 >