将原始索引存储在Sympy索引对象中



我希望能够获得一个Indexed对象,用值代替它的索引,但仍然记得它的原始索引。

from sympy.tensor import IndexedBase, Idx
C = IndexedBase("C")
i,j = Idx("i"), Idx("j") 
expr = C[i,j]
expr = expr.subs({i:1, j:2})

有可能从expr中获得原始索引(i,j)吗?由于表达式是不可变的,所以我对原始表达式所做的任何修改都不会显示在新表达式中。

我想这里的一般问题是如何将附加信息附加到Sympy符号上。

您可以将常规信息附加到像symbols('x', integer=True)这样的符号,但不能赋值。但是,您可以使用替换的符号创建新的变量。这使您的原始表达式保持不变:

newexpr = expr.subs({i:1, j:2})

SymPy在执行subs后不会"记住"事物的来源。您应该构造代码,以便保留原始表达式。

相关内容

  • 没有找到相关文章

最新更新