Python 带有numexpr和sqrt的sympy lambdify

Python 带有numexpr和sqrt的sympy lambdify,python,numpy,sympy,numexpr,Python,Numpy,Sympy,Numexpr,我正在尝试使用numexpr来加速lambdify生成的一些数字代码。不幸的是,当使用sqrt函数时,基于numexpr的函数会中断,即使它是最常用的函数之一 这为我再现了这个问题: import sympy import numpy as np import numexpr from sympy.utilities.lambdify import lambdify expr = sympy.S('b*sqrt(a) - a**2') a, b = sorted(expr.free_symb

我正在尝试使用
numexpr
来加速
lambdify
生成的一些数字代码。不幸的是,当使用
sqrt
函数时,基于
numexpr
的函数会中断,即使它是最常用的函数之一

这为我再现了这个问题:

import sympy
import numpy as np
import numexpr

from sympy.utilities.lambdify import lambdify

expr = sympy.S('b*sqrt(a) - a**2')
a, b = sorted(expr.free_symbols, key=lambda s: s.name)

func_numpy = lambdify((a,b), expr, modules=[np], dummify=False)
func_numexpr = lambdify((a,b), expr, modules=[numexpr], dummify=False)

foo, bar = np.random.random((2, 4))

print sympy.__version__
print func_numpy(foo, bar)
print func_numexpr(foo, bar)
运行此操作时,输出为:

0.7.6
[-0.02062061  0.08648306 -0.57868128  0.27598245]
Traceback (most recent call last):
  File "sympy_test.py", line 17, in <module>
    print func_numexpr(foo, bar)
  File "<string>", line 1, in <lambda>
NameError: global name 'sqrt' is not defined
它按预期工作,产生与
func\u numpy
相同的结果


编辑:当我使用该行时,它起作用:

func_numexpr = lambdify((a,b), expr, modules=['numexpr'], dummify=False)

这是一个sympy bug吗?

我不确定
lambdify()
是否与
numexpr
一起工作。例如,
numexpr.sqrt()
不存在。请参阅我的编辑。它与字符串“numexpr”一起工作,但与模块对象本身无关。提交了一个问题:和修复:
func_numexpr = lambdify((a,b), expr, modules=['numexpr'], dummify=False)