我正在使用具有单位的Sympy表达式。这是一个简单的示例:
from sympy.physics.units import newton, meter
atmosphere = 101325. * newton / (meter **2)
在上面的示例中,是否有一种简洁的方法来从变量newton / (meter **2)
中获取单位,即atmosphere
?
答案 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)
。