Python中的单位转换

发布于 2021-01-29 17:56:47

我正在开发一个项目,该项目可以使用户随着时间的推移跟踪不同的数据类型。基本思想的一部分是用户应该能够使用他们需要的任何单位输入数据。我一直在看两个单元:

http://pypi.python.org/pypi/units/

和数量:

http://pypi.python.org/pypi/quantities/

但是我不确定最好的方法。据我所知,数量更为复杂,但包括更好的初始单位清单。

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我赞扬在科学计算应用程序中使用显式单位。使用显式单位类似于刷牙。它在前面增加了一些乏味,但是从长远来看,您获得的类型安全性可以节省很多麻烦。比如说,不要让1.25亿美元的人造卫星撞向行星

    您可能还应该检查另外两个python单位/数量软件包:

    um

    科学物理物理量

    我曾经研究过Scientific.Physics.PhysicalQuantity。它不能完全满足我的需求,但可以满足您的需求。从简短的说明中很难说出您需要什么功能。

    我最终编写了自己的python软件包以进行单位转换和尺寸分析,但尚未正确包装以供发布。我们将我的单位系统用于我们的OpenMM系统的python绑定中,以实现GPU加速的分子力学。您可以在以下位置浏览我的python单元代码的svn存储库:

    SimTK python单位

    最终,我打算将其打包以进行分发。如果您觉得有趣,请告诉我。这可能会促使我尽快打包。设计SimTK python单位系统时,我正在寻找的功能包括:

    1. 单位不一定在内部存储为SI单位。这对我来说非常重要,因为对我们而言,一个重要的应用领域是分子规模。在内部使用SI单位会导致常用分子力计算中的指数溢出。在内部,所有单元系统在SimTK中都是同等重要的。
    2. 我想要与C ++中的Boost.Units系统类似的功能和灵活性。既因为我熟悉该系统,又因为它是在一大批才华横溢的工程师的监督下设计的。Boost.Units是精心设计的第二代尺寸分析系统。因此,我可能会认为SimTK单位系统是第三代系统:)。请注意,尽管Boost.Units是一个“零开销”系统,并且没有运行时成本,但是所有python数量的实现(包括SimTK单位)都可能会消耗运行时成本。
    3. 我想要与numpy数组兼容的确定数量的数量,但不一定需要python numpy包。换句话说,数量可以基于numpy数组或基于内置的python类型。

    哪些功能对您很重要?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看