例如,我有值a
。
import sympy.physics.units as u
a = 133.05*u.kg/u.m
我想将此物理量转换为浮点值,我知道的唯一方法是float(a/(u.kg/u.m))
。
答案 0 :(得分:1)
您可以像这样使用as_coeff_Mul
:
>>> a = 133.05*u.kg/u.m
>>> a.as_coeff_Mul()
(133.05, kg/m)
所以浮动值应该是
>>> a.as_coeff_Mul()[0]
133.05
答案 1 :(得分:0)
好吧,如果你想获得没有单位的价值,你可以拆分字符串。这是我能想到的直截了当的方式。
In [1]: import sympy.physics.units as u
a = 133.05*(u.kg/u.m)
new_a = float(str(a).split('*')[0])
print(new_a)
Out[1]: 133.05
答案 2 :(得分:0)
您可以使用a.args
获取所需信息。它返回一个元组,首先包含数值,然后是单位。例如:
import sympy.physics.units as u
a = 133.05*u.kg/u.m
print(a.args[0])
print(type(float(a.args[0])))
答案 3 :(得分:0)
如果您知道表达式的单位或物理量,那么以下是我迄今为止找到的将其量级设为浮点数的最可靠方法。
def to_float(expr, expr_unit):
return float(expr / expr_unit)
示例:
import sympy.physics.units as un
flow_rate = 50 * un.m ** 3 / un.h
unit = un.m ** 3 / un.h
print(to_float(flow_rate, unit))
# 50.0
https://en.wikipedia.org/wiki/List_of_physical_quantities
from sympy.physics.units import convert_to
def to_float_as(expr, unit):
converted = convert_to(expr, unit)
return to_float(converted, unit)
示例:
假设您有多个单位的多个测量值,但所有测量值都是长度,并且您有兴趣对它们求和。
from functools import partial
import sympy.physics.units as un
measurements = [
50 * un.m,
3 * un.km,
2.5 * un.mi,
]
sum_in_meters = sum(map(partial(to_float_as, unit=un.m), measurements))
print(sum_in_meters)
# ~7073.36