[英]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.