如何简洁地获取Sympy表达式的单位

时间:2018-07-01 02:17:33

标签: python sympy

我正在使用具有单位的Sympy表达式。这是一个简单的示例:

from sympy.physics.units import newton, meter
atmosphere = 101325. * newton / (meter **2)

在上面的示例中,是否有一种简洁的方法来从变量newton / (meter **2)中获取单位,即atmosphere

2 个答案:

答案 0 :(得分:2)

您的方法很好,但是我将is_number的支票has(Quantity)替换为

from sympy.physics.units import Quantity,
def unit(expr):
    return expr.subs({x: 1 for x in expr.args if not x.has(Quantity)})

然后它也适用于符号金额,例如

g = symbols('g')
acc = g*meter/second**2
unit(acc)  # meter/second**2 

答案 1 :(得分:0)

我认为对我的应用程序来说正确的答案实际上是expr.as_coeff_Mul(),它返回元组(c, x),其中c是数字,x是符号的乘积。如果您的表达式仅是数字和单位,则将直接为您提供(magnitude, units)