Пожалуйста, дайте мне знать, если я нахожусь в нужном месте. Это мой первый раз здесь.
В части "else", пожалуйста, дайте мне знать, что означает часть "for v in x c", особенно в отличие от точечных продуктов в нескольких строках. выше него и какую роль играет обратная коса sh после «факта»?
В случае len = 1 мы расставляем точки вектора с матрицей, которая на самом деле не является точечным произведением, а умножением матрицы. Но, я думаю, numpy .dot допускает это. В другом случае, обрабатывать векторы строки (или столбца?) По x c по одному, чтобы оставить вектор (вместо скаляра, как в случае len = 1)? И, если это так, означает ли это, что numpy .dot допускает матрицу векторных времен, но не матрицу временных матриц?
def pdf(x,mu,sigma):
d=np.alen(mu)
dfact1=(2*np.pi)**d
dfact2=np.linalg.det(sigma)
fact=1/np.sqrt(dfact1*dfact2)
xc=x-mu
isigma=-0.5*np.linalg.inv(sigma)
if len(np.shape(x)) == 1:
return fact*np.exp(np.dot(np.dot(xc, isigma),xc))
else:
return fact\
*np.exp(
[np.dot(np.dot(v, isigma),v) for v in xc]
)