假设我想创建一个只有一个符号的表达式,用乳胶书写(因为在Jupyter笔记本中可视化它确实很有帮助)。然后我使用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)>

现在,想象一个包装函数:在它里面,我定义了几个sympy表达式,每个表达式使用不同的乳胶符号。我给这个函数一个索引参数,用来返回对应表达式的lambdify版本。
当lambdify函数返回时,我非常想知道_Dummy_指的是什么,特别是当lambdify函数需要计算两个或多个参数时。例如,在上面的例子中,如果函数参数被调用AoB(我可以将其解释为alpha over beta),我就不会有问题。
理想情况下,我希望创建一个既接受乳胶(用于可视化目的)又接受备用符号的符号,以便在创建虚拟变量时使用(例如,使用lambdify)。有可能吗?

最佳答案

可能最简单的解决方案是保持乳胶符号到普通符号的映射,并在lambdizing之前替换它,比如

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

10-07 17:23