【问题标题】:Sympy - Lambdify - miningful names to dummy variablesSympy - Lambdify - 虚拟变量的挖掘名称
【发布时间】:2019-10-29 23:31:05
【问题描述】:

假设我想创建一个带有单个符号的表达式,用 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)>

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

当lambdify 函数被返回时,我真的很想知道_Dummy_ 指的是什么,尤其是当lambdify 函数需要两个或更多参数进行评估时。例如,在上面的示例中,如果函数参数被称为 AoB(我可以将其解释为 alpha over beta),我将没有问题。

理想情况下,我希望创建一个既接受 Latex (用于可视化目的)又接受后备符号的符号,以便在要创建虚拟变量时使用(例如,使用 lambdify)。有可能吗?

【问题讨论】:

    标签: python sympy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 2020-11-20
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多