问题标签 [pint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2620 浏览

python - 如何从品脱数量列表中创建一个 numpy 数组

将从变量 a 和 b 中创建一个 numpy 数组,这些变量是品脱数量。这有点粗略,因为不能保证 a 和 b 具有相同的单位。有更清洁的方法吗?我需要写一个函数吗?

0 投票
1 回答
772 浏览

python - 在品脱中,我如何将微符号重新定义为 µ-,而不是 u-?

pint中,如何重新定义micro-要拼写的前缀µ-而不是u-?在定义单位时,两者都是别名,但是在获取短符号(例如{:~}格式规范)时,即使我尝试重新定义,也会pint恢复为:u-micro- = 1e-6 = µ-

(请注意,这些警告显然是通过日志记录模块发出的,并且由于 my .pythonrc,中的规则而出现logging.basicConfig(format=("%(levelname)-8s %(asctime)s %(module)s.%(funcName)s:%(lineno)s: %(message)s"), level=logging.DEBUG)

如何重新定义micro-注册表中的条目,以便"{:~}".format(x)给我3 µm而不是3 um

编辑

我正在使用pint最新的 git 存储库:

编辑 2

仅当存在使用u-前缀的先前定义的数量时才会出现这种情况:

但是(新会话):

所以我想在使用u-别名之前需要重新定义默认值。

0 投票
1 回答
1110 浏览

python - 在不改变大小的情况下简化单位品脱

使用python-pint,假设我有一个定义为

这相当于kilogram/m3。现在,当我尝试使用它时,to_base_units我得到:

这很好,除了我希望幅度仍然是 1,而单位是,而是,<Quantity(1.0, 'kilogram / meter ** 3')>为了用户友好的目的。有没有办法做到这一点?

顺便说一句,在我的程序中,许多不同的单位都会发生这种情况,并且没有(简单的)方法可以知道将其转换为正确的单位,这使我无法使用convert_to方法。例如,在这种情况下,它应该从1000 gramto更改kilogram,但在下一种情况下,它可以是 from 0.001 meterto1 milimeter等等。

我知道品脱 0.7(我仍在使用 0.6)有一个新的系统选项,但我也无法解决它。

干杯

0 投票
1 回答
436 浏览

python - 具有多处理功能的 Python pint 模块

python pint 模块实现物理量。我想将它与多处理一起使用。但是,我不知道如何处理在新进程中创建 UnitRegistry。如果我做直觉:

然后我得到以下异常:

我认为这是由于在取消参数之前没有在子进程上初始化 UnitRegistry。(在函数 f 中初始化 UnitRegistry 不起作用,因为变量已经被解压)。

我将如何向子进程发送品脱数量?

在蒂姆彼得的回答之后编辑:

该问题与多处理无关。简单酸洗数量

然后在脚本中解压会导致同样的问题:

导致相同的异常。正如 Tim 所指出的,Q(50, 'ns'); Q(50, 'ms')在 unpickling 之前添加一行就足够了。当挖掘品脱的源代码时,在创建带有单位的数量时,ms该单位被添加到内部注册表中。酸洗使用UnitContainer实例来保存单位。通过 unpickling 创建 Quantity 时,不会将单位添加到注册表中。

一个简单的修复(在 pint 源代码中)是更改函数Quantity.__reduce__以返回一个字符串。

我在 pint 的 github 站点上打开了一个问题。

0 投票
2 回答
2204 浏览

python - 如何在 Pint 中定义和使用百分比

我目前正在使用Pint来处理单位和单位转换。例如,这似乎适用于已在 Pint 中定义的单位

我试图定义我自己的单位,它代表百分比。就单位转换而言,百分比只是无量纲分数的 100 倍,这就是我定义它的方式。

但是我似乎无法在分数 ( 'dimensionless') 和'pct'.

我基本上想做的是能够在例如“0.73”和“73%”之间进行转换。如何定义和使用这样的单位?

0 投票
2 回答
192 浏览

python - 无法使用品脱单位装饰类方法

这是一个非常简单的示例,旨在使用 Pint 装饰类方法,

此代码导致以下 ValueError。

在我看来,这里的问题可能是类实例被传递给品脱装饰器。有人有解决这个问题的方法吗?

0 投票
0 回答
82 浏览

python - 用品脱装饰类构造函数时无法获得正确的单位

我正在尝试以下代码,

这给出了输出,

这是一个浮点类型。有没有办法自动输出具有大小和正确单位的品脱数量对象,即 40.0 m**3?

谢谢

0 投票
1 回答
153 浏览

python - Python:如何实现多态二进制操作。魔法方法?

语境:

我每天都使用 Pandas(处理测量数据),我想了解更多关于 Python 的信息。

为此,我正在开发一个(包装器)类——MyDataFrame——它将 Pandas DataFrame 功能与Pint的功能相结合——一个用于定义、操作和操纵物理量的 Python 包。

我已经设法通过__str__,__get/setitem____truediv__MyDataFrame 的底层 MySeries (熊猫系列的包装器)获得了一些基本功能:

API 示例:

到目前为止,我将实现保持在最低限度,例如:

问题:

但是现在我想扩展这个基本概念,以便我们可以做例如

换句话说,使 MySeries 具有__mul__()多态性 --- 不仅将 MySeries 与 MySeries 相乘,而且将 MySeries 与 Pint Quantities 相乘(反之亦然)。什么可能是一个好方法?

我的第一个想法是__mul__(self,other)检查selfor的类型other。然而,阅读更多关于 Python 中的多态性(这里)让我想知道其他人将如何实现这种多态二进制操作。

让我知道我是否应该澄清一下。

PS:顺便说一句。我注意到在尝试模仿 Pandas 语法时,我正在编写包装器,例如

关于将所有常用的 Pandas 方法调用重定向到 MyDataFrame / MySeries 类的 Pandas 部分的任何建议?

顺便说一句,我知道是时候深入研究 Python 的文档了……

0 投票
1 回答
31 浏览

python - 在循环中动态定义方法,以模拟数字对象,但所有方法都接收最后一次迭代的值,为什么?

我正在尝试使用下面的代码动态设置方法来模拟数字对象。但相反,每个方法都设置为循环中的最后一个。为什么会发生这种情况,我该如何说服 Python 使用 DWIM?

0 投票
2 回答
308 浏览

python - Python - pint - 我可以将默认类型设置为十进制吗?

我在项目中使用pint模块。我项目中的对象将数字数据处理为小数。当我将简单的品脱单位设置为小数时,它可以工作:

但是,如果我尝试添加第二个单元,它就会中断。在此示例中构建千牛顿*米:

我正在使用这个黑客:

我明白为什么会这样。我正在寻找一种解决方案来设置我想要的品脱。