繁体   English   中英

获取 sympy 表达式的操作

[英]Get the operations of a sympy expression

如何让操作出现在 sympy 表达式中? 例如,对于: 2+x**2+exp(7*x)-log(y) ,我需要得到类似的东西: ["+","**","exp","*","-","log"] 我看到有一种使用.free_symbols获取变量的简单方法。 也有简单的操作方法吗? 我还发现了这个函数: srepr ,它返回: "Add(Pow(Symbol('x'), Integer(2)), exp(Mul(Integer(7), Symbol('x'))), Mul(Integer(-1), log(Symbol('y'))), Integer(2))" 这包含我需要的一切,但我不确定如何以有效的方式从那里提取我需要的所有部分? 有人能帮我吗? 谢谢!

有多种方法可以解决这个问题。 以下是一些演示,可帮助您入门:

>>> eq
x**2 + exp(7*x) - log(y) + 2
>>> count_ops(eq, visual=True) # expression showing how many of each
2*ADD + EXP + LOG + MUL + POW + SUB
>>> count_ops(eq,visual=True).free_symbols  # Symbols
{ADD, EXP, LOG, MUL, POW, SUB}
>>> [i.name for i in count_ops(eq,visual=True).free_symbols] # strings
[MUL, POW, ADD, LOG, EXP, SUB]

>>> [func_name(i) for i in eq.atoms(Basic)]
[Integer, Symbol, Integer, Mul, Symbol, log, exp, Mul, Add, Pow, NegativeOne]

>>> [func_name(i) for i in eq.atoms(Function)]
[log, exp]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM