2017-01-13 49 views
1

我目前正在使用Sympy 1.0和Python 2.7,我的目标是用符号替换表达式中的每个数字参数。Sympy:在表达式中替换“-1”?

例如:

2 * x + 3 * y - 10 * z -> a * x + b * y - c * z 

到目前为止,我用expression.atoms(Number)获得数值参数列表中,以后取代它们或者使用.subs或写信一切为字符串并使用.replace。不过,我现在面临的问题与表达式,如:

expression = sympy.simpify("x - z") 

哪里-z实际上是-1 * z如果我分析表达式树......但-1没有的expression.atoms(Number)结果中出现,所以我不能代替它。

即使将表达式转换为字符串,然后使用.replace也没有什么帮助,因为-1 * z始终写为-z

可能有一些解决方案,我忽略了,但到目前为止,我卡住了。你可以帮我吗?预先感谢您的时间。

+3

你确定吗? 'sympy.simplify(' - x')。atoms()'返回给我{-1,x}' –

+1

你是对的:我第一次尝试使用'subs'时可能犯了个错误。我用'subs'重试。刚才,它的工作完美无瑕。 – Alberto

+0

你说得对,我会这么做。 – Alberto

回答

1

事实上,事实证明,我可能做了一个虚无error error的错误,当我第一次尝试使用.subs;正如帕特里克在评论中指出的,.subs在这种情况下完美运作。