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

时间:2015-02-20 10:03:59

标签: python sympy indexed

我希望能够获取一个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符号。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

SymPy没有记得"在做subs后事情来自哪里。您应该构造代码,以便保留原始表达式。