我正在使用SymPy进行符号的表达式操作,使用NumPy对大量数据进行了评估。为了加快速度,我使用sympy.lambdify,但无法使Abs工作。
import sympy
import numpy as np
x = sympy.symbols('x',real=True)
def f(x):
return 1-sympy.Abs(x)
def g(x):
return 1-sympy.sqrt(x)
fl = sympy.lambdify(x,f(x),'numpy')
gl = sympy.lambdify(x,g(x),'numpy')
gl(1) # success
gl(np.array([1,2,3]))
fl(2) # NameError: global name 'Abs' is not defined
fl(np.array([1,2,3])) # Same error
一种选择是对lambdify调用使用'sympy'参数,但随后我不能使用数组。我尝试使用sympy.abs和numpy.abs,但没有成功。
我在程序中使用它来使用逆置换和一些列表式积分来解决麻烦的积分,但是使用abs函数而不是显式处理不同区域的选项将非常方便。
sympy.Abs确实已定义
提前致谢
这看起来像是在最新版本的SymPy中已修复的错误:https : //code.google.com/p/sympy/issues/detail? id = 2654它适用于Python 2.7.9,SymPy 0.7.3和Python 3.3.5,SymPy 0.7.5。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句