问题标签 [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.
python - 如何从品脱数量列表中创建一个 numpy 数组
将从变量 a 和 b 中创建一个 numpy 数组,这些变量是品脱数量。这有点粗略,因为不能保证 a 和 b 具有相同的单位。有更清洁的方法吗?我需要写一个函数吗?
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-
别名之前需要重新定义默认值。
python - 在不改变大小的情况下简化单位品脱
使用python-pint
,假设我有一个定义为
这相当于kilogram/m3
。现在,当我尝试使用它时,to_base_units
我得到:
这很好,除了我希望幅度仍然是 1,而单位是,而是,<Quantity(1.0, 'kilogram / meter ** 3')>
为了用户友好的目的。有没有办法做到这一点?
顺便说一句,在我的程序中,许多不同的单位都会发生这种情况,并且没有(简单的)方法可以知道将其转换为正确的单位,这使我无法使用convert_to
方法。例如,在这种情况下,它应该从1000 gram
to更改kilogram
,但在下一种情况下,它可以是 from 0.001 meter
to1 milimeter
等等。
我知道品脱 0.7(我仍在使用 0.6)有一个新的系统选项,但我也无法解决它。
干杯
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 站点上打开了一个问题。
python - 无法使用品脱单位装饰类方法
这是一个非常简单的示例,旨在使用 Pint 装饰类方法,
此代码导致以下 ValueError。
在我看来,这里的问题可能是类实例被传递给品脱装饰器。有人有解决这个问题的方法吗?
python - 用品脱装饰类构造函数时无法获得正确的单位
我正在尝试以下代码,
这给出了输出,
这是一个浮点类型。有没有办法自动输出具有大小和正确单位的品脱数量对象,即 40.0 m**3?
谢谢
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)
检查self
or的类型other
。然而,阅读更多关于 Python 中的多态性(这里)让我想知道其他人将如何实现这种多态二进制操作。
让我知道我是否应该澄清一下。
PS:顺便说一句。我注意到在尝试模仿 Pandas 语法时,我正在编写包装器,例如
关于将所有常用的 Pandas 方法调用重定向到 MyDataFrame / MySeries 类的 Pandas 部分的任何建议?
顺便说一句,我知道是时候深入研究 Python 的文档了……
python - 在循环中动态定义方法,以模拟数字对象,但所有方法都接收最后一次迭代的值,为什么?
我正在尝试使用下面的代码动态设置方法来模拟数字对象。但相反,每个方法都设置为循环中的最后一个。为什么会发生这种情况,我该如何说服 Python 使用 DWIM?
python - Python - pint - 我可以将默认类型设置为十进制吗?
我在项目中使用pint模块。我项目中的对象将数字数据处理为小数。当我将简单的品脱单位设置为小数时,它可以工作:
但是,如果我尝试添加第二个单元,它就会中断。在此示例中构建千牛顿*米:
我正在使用这个黑客:
我明白为什么会这样。我正在寻找一种解决方案来设置我想要的品脱。