我希望能够获取一个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符号。
答案 0 :(得分:0)
您可以将常规信息附加到symbols('x', integer=True)
等符号,但不能指定值。但是,您可以使用替换符号创建新变量。这使原始表达不变:
newexpr = expr.subs({i:1, j:2})
答案 1 :(得分:0)
SymPy没有记得"在做subs
后事情来自哪里。您应该构造代码,以便保留原始表达式。