gpt4 book ai didi

python - 替换部分 sympy 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:19:49 25 4
gpt4 key购买 nike

假设我有这样的同情表达:

x = ( 1+ r70f * C2H4 *H+ r71* O)

哪里r70f, C2H4, H , r71, O是 sympy 变量。我希望将其更改为以下表达式:

x = ( 1+ k(r70f) * c(sC2H4) *c(sH)+ k(r71)* c(sO))

基本上替换r_SomeNumber_fk(r_SomeNumber_f)并替换C2H4HOc(sC2H4)c(sH)c(sO)分别。

我正在尝试使用正则表达式,但是 re.sub需要 str ,但它们都是sympy对象,这让事情变得复杂!!!

最佳答案

我演示了两种方法来做到这一点:一种是使用符号欺骗,另一种是使用包装函数:

>>> ns={}
>>> ns["O"] = Symbol("O")
>>> x = S('1+ r70f * C2H4 *H+ r71* O', locals=ns)
>>> # Symbol trickery -- changing the name to have parens in it
>>> print(x.replace(
... lambda x: re.match('r[0-9]+f', str(x)),
... lambda x: Symbol('k(%s)' % str(x))))
...
C2H4*H*k(r70f) + O*r71 + 1

# function wrapper
>>> k=Function('k')
>>> print(x.replace(lambda x: re.match('r[0-9]+f', str(x)), lambda x:k(x)))
C2H4*H*k(r70f) + O*r71 + 1

注意:您说过要查找 k_number_f,但 r71 的大小写不以“f”结尾,因此它不会更改。

我将用“c-function”包装的其他转换作为扩展。

关于python - 替换部分 sympy 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com