Sympy - Lambdify - 挖掘虚拟变量的名称

Dav*_*_sd 5 python sympy

假设我想创建一个带有单个符号的表达式,用 Latex 编写(因为在 Jupyter Notebook 中可视化它真的很有帮助)。然后我lambdify用来获得一个可以评估多个值的函数。问题是这个函数会显示一个名为 的变量_Dummy_,如下所示。

AoB = sp.symbols(r'\frac{\alpha}{\beta}')
expr = 2 * AoB
lam = sp.lambdify([AoB], expr, 'numpy')
display(lam)

Output: <function _lambdifygenerated(_Dummy_1198)>
Run Code Online (Sandbox Code Playgroud)

现在,想象一个包装函数:在其中我定义了几个 sympy 表达式,每个表达式都使用不同的 Latex 符号。我给这个函数一个 index 参数,它用于返回相应表达式的 lambdify 版本。

当lambdify 函数返回时,我真的很想知道_Dummy_它指的是什么,尤其是当lambdify 函数需要计算两个或更多参数时。例如,在上面的示例中,如果调用函数参数AoB(我可以将其解释为 alpha 超过 beta),我就没有问题。

理想情况下,我很想创建一个既接受 Latex (用于可视化目的)又接受回退符号的符号,以便在要创建虚拟变量时使用(例如,使用 lamdify)。是否可以?

asm*_*rer 4

也许最简单的解决方案是保留乳胶符号到普通符号的映射,并在羔羊化之前替换它,例如

AoB = sp.symbols(r'\frac{\alpha}{\beta}')
mapping = {AoB: Symbol('AoB')}
expr = 2 * AoB
lam = sp.lambdify([mapping[AoB]], expr.xreplace(mapping), 'numpy')
Run Code Online (Sandbox Code Playgroud)