Как вычислить многомерную нормальную функцию распределения вероятностей со средним значением и cov, сохраненным в матрице

#python #numpy #matrix #scipy #distribution

#python #numpy #матрица #scipy #распределение

Вопрос:

Я новичок в Python. Был бы признателен, если бы кто-нибудь мог мне помочь.

У меня есть массив O , в котором первый и второй столбцы соответствуют среднему значению и значению трех (по одному для каждой строки) многомерных нормальных случайных величин соответственно.

Я хотел бы вычислить функцию распределения вероятностей, используя SciPy multivariate_normal.pdf() для заданного числа (например x = 2.5 ) с этими тремя средними значениями и значениями cov. Результат должен быть сохранен в массиве alpha в форме 1 * 3 .

Мне нужно использовать multivariate_normal.pdf(x, mean=m, cov=co) . Мой код:

 import numpy as np
from scipy.stats import multivariate_normal

alpha = np.zeros((1, 3))
O = np.array([[3.8, 0.01], [1, 1], [2, 0.5]])

def c_emission(x, m, co):
    return multivariate_normal.pdf(x, mean=m, cov=co)

alpha[0, :] = c_emission(2.5, O[:, 0], O[:, 1])
  

Моя проблема в том, что c_emission(2.5, O[:, 0], O[:, 1]) является скаляром вместо вектора.

Комментарии:

1. Я не рекомендую использовать O в качестве имени переменной, поскольку оно очень похоже на 0 (ноль).