我希望使用SymPy将包含erf函数的符号表达式进行Lambda化。对于标量参数,可以执行以下操作:
log_normal = 0.5 + 0.5 * sym.erf((sym.log(x) - mu) / sym.sqrt(2 * sigma**2))
F = sym.lambdify([x, mu, sigma], log_normal)
F(1.0, 0.0, 1.0)
我想要对上述内容进行矢量化处理。通常情况下,我会按照以下方式进行操作...
log_normal = 0.5 + 0.5 * sym.erf((sym.log(x) - mu) / sym.sqrt(2 * sigma**2))
vector_F = sym.lambdify([x, mu, sigma], log_normal, modules='numpy')
vector_F(1.0, 0.0, 1.0)
然而,上述问题引发了一个“NameError”(名称错误)...
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-29-14adde48d4a1> in <module>()
----> 1 vector_F(1.0, 0.0, 1.0)
/Users/drpugh/anaconda/lib/python2.7/site-packages/numpy/__init__.pyc in <lambda>(x, mu, sigma)
NameError: global name 'erf' is not defined
这是一个bug,还是我漏掉了一些微不足道的东西?
modules=['numpy', {'erf': scipy.special.erf}]
来使用Scipy的erf
函数。 - asmeurererf
并不起作用。然而,使用你的解决方案确实有效。 - NichtJens