Pint:Python 物理量单位的处理利器
Pint:Python 物理量单位的处理利器
hgrecco/pint 在 GitHub 上收获了 2,740 个 Star:

Pint 是一个 Python 库,用于定义、操作和转换物理量。物理量由数值和单位共同组成,Pint 可以对它们执行算术运算,并在不同单位之间自动转换。
它自带完整的物理单位、前缀和常量列表。由于采用模块化设计,你可以在无需修改源码的情况下扩展或重写这些定义。Pint 支持大量 NumPy 数学操作,且不需要对 NumPy 进行 monkey patching 或包装。

使用方式
Pint 的 API 设计得很直接。先创建 UnitRegistry 实例,然后通过它构造带单位的量:
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> 3 * ureg.meter + 4 * ureg.cm
Quantity(3.04, "meter")
与 NumPy 配合时,数组运算同样保持单位感知:
>>> import numpy as np
>>> [3, 4] * ureg.meter + [4, 3] * ureg.cm
Quantity([ 3.04 4.03], "meter")
>>> np.sum(_)
Quantity(7.07, "meter")
安装方法
通过 pip 直接安装:
pip install pint
或者使用 conda:
conda install -c conda-forge pint
核心设计特点
Pint 的设计围绕几个关键点展开。
单位解析能力较强。前缀和复数形式的单位无需显式定义即可识别。例如,定义了前缀 kilo 和单位 meter 后,Pint 自动理解 kilometers。这让单位定义列表更短,维护成本更低。
单位定义存储在文本文件中,结构简单,编辑方便。添加或修改单位时不需要改动代码。
字符串格式化遵循 PEP 3101 语法。支持符号、LaTeX 和美观格式输出。安装 Babel 后可实现单位名称的本地化翻译。
数值类型不受限。可以使用 fraction、float、decimal、numpy.ndarray 等任意数值类型。NumPy 不是必需依赖,安装后会自动集成。
NumPy 集成较深入。使用 ndarray 时,其方法和 ufunc 均被支持,单位转换自动进行。例如 numpy.arccos(q) 要求 q 为无量纲量,输出单位为弧度。
温度转换也是内置功能。支持不同参考点的单位转换,如地图位置或绝对温标。
误差处理方面,Pint 可与 uncertainties 包配合,透明地处理带不确定度的物理量运算,如 3.14±0.01 meter。
Pandas 用户也有对应方案。通过 Pandas Extension Types 集成,DataFrame 和列之间的操作保持单位感知,具体可参考 pint-pandas 项目。
Pint 仅依赖 Python 标准库,无外部强制依赖。兼容 Python 3.9 及以上版本,采用 BSD 许可证。
项目附带命令行工具 pint-convert,可用于单位换算或查询转换系数。
Python 3.9 及以上版本,采用 BSD 许可证。
项目附带命令行工具 pint-convert,可用于单位换算或查询转换系数。
更多推荐

所有评论(0)