我正在开发一个项目,让用户随着时间的推移跟踪不同的数据类型。部分基本思想是用户应该能够使用他们需要的任何单位输入数据。我一直在看这两个单位:
http://pypi.python.org/pypi/units/和数量:
http://pypi.python.org/pypi/quantities/但是我不确定最好的方法。据我所知,数量更复杂,但包括更好的初始单位列表。
我赞成在科学计算应用程序中使用显式单位。使用显式单位类似于刷牙。它预先增加了一些乏味,但是从长远来看,您获得的类型安全性可以节省很多麻烦。例如,not crashing $125 million orbiters into planets。
你也应该看看这两个其他的 Python 单位 / 数量包:
Unum Scientific.Physics.PhysicalQuantity我曾经调查过 Scientific.Physics.PhysicalQuantity。它并不能完全满足我的需求,但可能会满足您的需求。从您的简要描述中很难说出您需要什么功能。
我最终为单位转换和维度分析编写了自己的 python 包,但它还没有正确打包发布。我们正在使用我的 unit system in the python bindings for our OpenMM system for GPU accelerated molecular mechanics。您可以在以下位置浏览我的 python 单元代码的 svn 存储库:
SimTK python units最终我打算将其打包以供分发。如果你觉得有趣,请让我知道。这可能会激励我更快地打包它。当我设计 SimTK python units 系统时,我正在寻找的功能包括以下内容:
在内部,所有单位制在 SimTK 中都是同样基本的。
我想要与 C ++ 中的Boost.Units系统类似的功能和灵活性。这是因为我熟悉该系统,并且因为它是在一大批杰出工程师的下设计的。Boost.Units 是一个精心制作的第二代维度分析系统。因此,我可能会争辩说 SimTK 单位制可能是第三代系统:)。请注意,虽然 Boost.Units 是一个“零开销”系统,包括所有运行时成本,
我想要与 numpy 数组兼容的维度数量,但不一定需要 python numpy 包。换句话说,数量可以基于 numpy 数组或内置的 python 类型。
哪些功能对您很重要?
Pint最近来到这个领域。有人愿意分享他们的经验吗?看起来不错。仅供参考:在不久的将来,它看起来像Pint will be integrated with Uncertainties。
请注意,quantities
对温度的支持非常差:
>>> (100 * pq.degC).rescale(pq.degF)
array(179.99999999999997) * degF
>>> (0 * pq.degC).rescale(pq.degF)
array(0.0) * degF
0 摄氏度不是 0 华氏度。他们的框架不支持任何不只是乘以一个因子的转换。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(40条)