Выберите из многомерного обычного pdf

#python #numpy #scipy #particle-filter

#python #numpy #scipy #фильтр частиц

Вопрос:

У меня есть несколько вопросов scipy.stats.multivariate_normal .

  1. Что он возвращает? Я понимаю, что при использовании:
     var = scipy.stats.multivariate_normal(mean, cov)
    z = var.pdf([x,y])
     

    Я получу в z pdf-файл этого индекса. Это правда?

  2. Я предположил, что заданное среднее значение является пиком pdf. Я прав?
  3. Я хочу создать 4D-карту гауссовского pdf и выбрать из нее случайным образом, по pdf, N точкам (для прогнозирования фильтра частиц). Для использования np.choose мне нужно создать массив значений формы (M,1) в формате pdf и массив из 4 точек формы (M, 4) .

Есть ли более эффективный способ сделать это?

Ответ №1:

Нормальное распределение довольно распространено и реализовано во многих разных местах, поэтому я думаю, вам было бы лучше использовать случайную нормальную выборку из numpy: https://numpy.org/doc/stable/reference/random/generated/numpy.random.normal.html . В этой функции вы можете указать форму вывода.

Ответ №2:

используя ответ DIN, это то, что я сделал:

 x_predict = np.random.normal(mean[0], covs[0], N)
y_predict = np.random.normal(mean[1], covs[1], N)
sx_predict = np.random.normal(mean[2], covs[2], N)
sy_predict = np.random.normal(mean[3], covs[3], N)
particles = np.dstack((x_predict, y_predict, sx_predict, sy_predict))