直接賦值變量不會修改追溯使用該變量的表達式。如何用sympy中的表達式替換多個符號?
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> f = x + y
>>> x = 0
>>> f
x + y
直接賦值變量不會修改追溯使用該變量的表達式。如何用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)' –