如何用sympy中的表达式替换多个符号?
直接赋值变量不会修改追溯使用该变量的表达式。如何用sympy中的表达式替换多个符号?
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0
>>> f
x + y
要替换几个值:
>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
30
正在寻找这个答案。我明白为什么我的代码无法正常工作,但我只需要一个快速参考语法的子值。在我的第一个谷歌搜索找不到任何东西,所以我想我会分享答案后,我想通了,希望有时间保存下一个人。发布问答风格是计算器的一项功能。 http://meta.stackoverflow.com/questions/290038/answer-your-own-question-qa-style – Wesley
如果f是符号矩阵?如'a = symarray('a',3)'? –
其实sympy设计不是取代值,直到你真的想与subs
来代替它们(见http://docs.sympy.org/latest/tutorial/basic_operations.html)
尝试
f.subs({x:0})
f.subs(x, 0) # as alternative
代替个
x = 0
如果f是符号矩阵,该怎么办?如'a = symarray('a',3)'? –
命令x = Symbol('x')
存储Sympy的Symbol('x')
成Python的变量x
。之后创建的Sympy表达式f
确实包含Symbol('x')
,而不是Python变量x
。
当您重新指定x = 0
时,Python变量x
设置为零,并且不再与Symbol('x')
相关。这对Sympy表达式没有影响,Sympy表达式仍然包含Symbol('x')
。
这在Sympy文档的这个页面是最好的解释: http://docs.sympy.org/latest/gotchas.html#variables
你想要做什么是f.subs(x,0)
,在其他的答案说。
如果f是符号矩阵,该怎么办?如'a = symarray('a',3)'? –
请查看:http://docs.sympy.org/latest/tutorial/basic_operations.html for expr.subs(x,val)' –