首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >品脱:如何在Python库中定义自己的单元?

品脱:如何在Python库中定义自己的单元?
EN

Stack Overflow用户
提问于 2022-06-07 20:03:07
回答 1查看 62关注 0票数 1

我正与Pint一起在Python项目中进行单元转换。该项目涉及温度梯度,这些温度梯度没有在Pint中定义。我的单位通常是“度C/公里”,所以我想申报一个数量为"55度C/公里“。然后我想使用Pint无痛地将这个数量转换为"XXX Deg.F/英里“或"YYY deg.F/km”等。这涉及到使用Pint的内置功能定义我自己的单元,但我不明白。

例如,我希望能够这样做:

代码语言:javascript
运行
复制
from pint import UnitRegistry, Quantity
ureg = UnitRegistry()
ureg.load_definitions('GEOPHIRES3_newunits.txt') 

Myquanity = Quantity("55 deg.C/km")
Myquantity_new_units = Myquanity.to("deg.F/mile")
Myquantity_new_units2 = Myquanity.to("deg.C/mile")

我应该能够通过编辑自己的定义文件(在代码的第3行中定义为GEOPHIRES3_newunits.txt )来做到这一点。这就是我所拥有的:

代码语言:javascript
运行
复制
#Gradient
[gradient] = [temperature] / [length]
CooperC = degC/km = deg.C/km
CooperF = CooperC * 1.60934 * 1.7999 = degF/mi = deg.F/mi

因为“dec.C/km”被定义为别名,所以它应该可以工作,但是它却创建了一个错误类型的数量--它创建了< Quantity (55.0,'coulomb *度数/公里‘)>。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 05:30:06

从我的第一次浏览中可以看出,您的代码中有几个问题:

  1. 您还没有将“dec.C/km”定义为别名:“如果要指定别名,但不指定符号,则应该按惯例将符号设置为_”
  2. 我没有在Pint文档中找到任何东西(不是说我太热衷于此),但在我看来,在单位别名和符号中不允许使用点,它们被视为乘法(因此,在您的错误中,deg.C是“库仑*度”,在我的测试中是deg.F)。
  3. 另外,您的温度梯度不应该使用绝对温度,而应该使用它们的增量对应,请参见温度转换
  4. 你真的需要为你的单位定制定义吗?据我所见,"delta_degC/km“和”delta_degF/英里“是由Pint处理的,与默认的单元注册表非常好。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72536955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档