首页 > 解决方案 > python中关于线性代数语法的困惑

问题描述

如果我在正确的地方,请告诉我。这是我第一次来这里。

在“else”部分,您能否让我知道“for v in xc”部分的含义,特别是与上面几行的点积相比,以及“fact”之后的反斜杠起什么作用?

在 len = 1 的情况下,我们将向量与矩阵点在一起,这实际上不是点积,而是矩阵乘法。但是,我猜 numpy.dot 允许它。对于 else 情况,是否一次处理 xc 中的行(或列?)向量以留下向量(而不是 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]
        )

标签: pythonlinear-algebra

解决方案


推荐阅读