Lamdify保留一些符号的功能

时间:2015-08-10 03:17:17

标签: python numpy sympy

我正在尝试将SymPy表达式化为NumPy计算函数,但保留原始表达式的一些符号。它适用于一些简单的表达式

>>> x,y,z=sympy.symbols('x y z')
>>> expr1=(x+y)*z
>>> func1=sympy.lambdify((x,y),expr1,modules='numpy')
>>> func1(1.,1.)
2.0*z

但是当我尝试其他更复杂的时候:

>>> expr2=sympy.exp((x+y)*z)
>>> func2=sympy.lambdify((x,y),expr2,modules='numpy')
>>> func2(1.,1.)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <lambda>
AttributeError: 'Mul' object has no attribute 'exp'

我收到此错误。任何建议都会受到欢迎!

1 个答案:

答案 0 :(得分:0)

您是否检查过在模块中使用“sympy”是否可以完成这项工作?它似乎适用于你的小例子。我们只需要知道它是否能满足您对“numpy”选项的期望。

在处理极地形式的复数之前我遇到过这个问题。使用“sympy”只是解决问题,直到现在,我已经能够毫无困难地与他们合作。

import sympy as sp

x, y, z = sp.symbols("x y z")
expr2 = sp.exp((x + y) * z)
func2 = sp.lambdify((x, y), expr2, modules="sympy")
func2(1., 1)