gpt4 book ai didi

python - 这个表达式在 python 中的代码

转载 作者:行者123 更新时间:2023-11-28 23:00:06 25 4
gpt4 key购买 nike

我正在尝试用 Python 编写此表达式,但遇到了一些困难。

enter image description here

这是我目前的代码,需要一些建议。

 x = 1x2 vector
mu = 1x2 vector
Sigma = 2x2 matrix

xT = (x-mu).transpose()
sig = Sigma**(-1)
dotP = dot(xT ,sig )
dotdot = dot(dotP, (x-mu))
E = exp( (-1/2) dotdot )

我走在正确的轨道上吗?有什么建议吗?

最佳答案

  • Sigma ** (-1) 不是您想要的。这会将 Sigma 的每个元素提高到 -1 次方,即 1/Sigma,而在数学表达式中它表示倒数,即用 Python 编写为 np.linalg.inv(Sigma)

  • (-1/2) dotdot 是语法错误;在 Python 中,您需要始终包含 * 以进行乘法运算,或者只执行 - dotdot/2。由于您可能使用的是 python 2,除法有点不靠谱;除非您完成了 from __future__ import division(强烈推荐),否则 1/2 实际上将是 0,因为它是整数除法。您可以使用 .5 来解决这个问题,但正如我所说,我强烈建议您进行除法导入。

  • 这很简单,但是您要执行两次 x-mu 减法,而只需执行一次。如果你的矢量很大,只做一次,可以节省一点速度。 (当然,这里是二维的,所以这根本不重要。)

  • 与其调用 the_array.transpose()(这很好),通常使用 the_array.T 会更好,它们是同一回事。

  • 我也不会使用名称xT;这对我来说意味着它是 x 的转置,这是错误的。

我可能会这样组合它:

# near the top of the file
# you probably did some kind of `from somewhere import *`.
# most people like to only import specific names and/or do imports like this,
# to make it clear where your functions are coming from.
import numpy as np

centered = x - mu
prec = np.linalg.inv(Sigma)
E = np.exp(-.5 * np.dot(centered.T, np.dot(prec, centered)))

关于python - 这个表达式在 python 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com