Ускорить/распараллелить multivariate_normal.pdfPython

Программы на Python
Гость
Ускорить/распараллелить multivariate_normal.pdf

Сообщение Гость »

У меня есть несколько точек Nx3, и я последовательно генерирую новое значение для каждой из соответствующего многомерного гауссиана, каждая со средним значением 1x3 и cov 3x3. Итак, у меня есть массивы: массив точек Nx3, массив средних Nx3 и массив covs Nx3x3.
Я вижу только, как это сделать с помощью классического цикла for:

Код: Выделить всё

import numpy as np
from scipy.stats import multivariate_normal

# Generate example data
N = 5  # Small number for minimal example, can be increased for real use case
points = np.random.rand(N, 3)
means = np.random.rand(N, 3)
covs = np.array([np.eye(3) for _ in range(N)])  # Identity matrices as example covariances

# Initialize an array to store the PDF values
pdf_values = np.zeros(N)

# Loop over each point, mean, and covariance matrix
for i in range(N):
pdf_values[i] = multivariate_normal.pdf(points[i], mean=means[i], cov=covs[i])

print("Points:\n", points)
print("Means:\n", means)
print("Covariances:\n", covs)
print("PDF Values:\n", pdf_values)
Есть ли способ ускорить это? Я пытался передать все непосредственно в multivariate_normal.pdf, но также и из документации, которая, похоже, не поддерживается (в отличие от более простого случая генерации значений для точек Nx3, но с тем же средним значением и ковариацией.
Может быть, какая-то реализация не из scipy?
Может быть, я слишком надеюсь, но почему-то я надеюсь, что есть более простой способ ускорить это и избежать итерации с этим циклом for в большой массив данных непосредственно с помощью цикла Pythonic.

Подробнее здесь: https://stackoverflow.com/questions/787 ... normal-pdf

Вернуться в «Python»