问题标签 [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-3.x - 如何在品脱中转换频率和周期?
我希望能够在频率值和周期值之间进行转换。这些不能直接转换,因为它们不是完全相同的单位,但我读到单位之间存在预定义的关系,称为Contexts。但是,我找不到哪些上下文定义了哪些关系,并且我无法在示例中给出的上下文中将MHz转换为ns'sp'
:
给出错误
python - SymPy 中的维度分析
我正在尝试使用SymPy执行以下任务:
- 化简一些物理量和物理常数的代数方程。
- 执行尺寸分析以确保我的方程式是正确的
- 通过插入物理量的值来评估方程。
下面是我针对此问题的最小可重现示例,我想在其中使用mass-energy equivalence找到与给定能量等效的质量量。(我在 Jupyter 中运行它,因为它可以使方程看起来不错。)
盯着E=m*c**2
我想解决m
:
伟大的!现在是进行维度分析的时候了。我将E
用焦耳定义我的能量,我不需要定义单位,c
因为它是一个物理常数,而且我使用的是 SI 单位(这似乎是 SymPy 的默认单位)。 我想知道 1 焦耳能量中有多少质量,我想知道这个质量的单位。 我将使用定义我的变量Quantity()
,然后再次将它们设置为等式,以便 SymPy 可以解决它:
它看起来不漂亮,但表达是正确的。现在我想看看的价值m
是什么,以及单位m
有什么。首先,我将解决方案保存m
在m_solve
:
现在,我可以看看有什么单位m_solve
吗?
AttributeError: 'Mul' object has no attribute 'dimension'
的价值m_solve
呢?
AttributeError: 'Mul' object has no attribute 'scale_factor'
什么是Mul
? 我如何得到一个Quantity
?更一般地说,SymPy 中是否有一个很好的工作流程来操作符号方程和检查单位,然后最终评估这些方程?如果不是 SymPy,有没有好的选择?(我尝试了一些替代方案,最有希望pint,但它似乎缺乏符号支持。)
python - 品脱列表转换
我有一个很长的列表,我正在尝试尽快转换。
目前,我正在执行以下操作,这与 1 比 1 转换相比非常快:
问题是,如果alist
包含一个None
值,我会得到:
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
有没有人知道如何解决这个问题,以便对于 None 值我得到一个 None 返回?
python - Check dimensionality of complex unit in pint
I am trying to check for dimensionality of a unit that is complex such as volume (m^3) or velocity (ft/min). How can I use the "pint.check()" method to see if a quantity is of that type of dimension?
This is what I have tried:
Doing this makes sense:
So I tried the "check" function but I don't know how to do it for volume:
Unfortunately, this doesn't work:
python - 如何在 python 3 中使用 pint Quantity 执行 numpy 矩阵乘法?
我想将 a 乘以(3, 3)
np.matrix
包含(3,1)
np.matrix
数量pint
信息的 a。
此代码有效:
此代码产生错误:
错误是:
如果我使用np.dot()
我会得到一个结果,但单位已被剥离
这是预期的行为吗?我应该能够将 NumPy 矩阵数学与pint
Quantities 一起使用吗?有没有办法做到这一点?
我正在使用 Python 3.7 Numpy == 1.15.2 Pint == 0.9
python - 防止以品脱为单位简化单位
我有时使用该pint
库来显示土木工程计算。
对于这些计算,有时我希望以某种方式显示数量以明确数量代表什么。但是在使用时pint
,单位会自动减少,使事情变得不太清楚。
一些例子:
- “每单位长度的力矩”:从更改
kip·ft/ft
为kip
- “单位长度面积”:从
in²/in
改为in
- “单位长度的惯性矩”:从更改
in⁴/in
为in³
- “斜率”:从更改
in/in
为无单位
说明第一个示例的代码:
我可以防止这种单位简化,并让单位以我想要的方式显示吗?
python - 在品脱中继承 Q_ - 为什么超级调用不带参数?
(Python 3.7)
品脱/Q_行为
我想继承品脱的数量类并覆盖__init__
。标准语法失败,因为显然参数冒泡到object
init 方法(不带参数):
似乎可行的是在子类中根本不调用 super/init ,但这有什么意义呢?
我相信后者是我想要使用的,但是当你认为它不应该工作时使用可以工作的代码似乎是灾难的根源。怎么了?
我猜这是由于Q_
动态生成的(ureg
实例化时,请参阅https://github.com/hgrecco/pint/blob/master/pint/registry.py#L115和https://github.com/hgrecco/pint /blob/master/pint/quantity.py#L1741)但看不到它为什么重要。
该问题不是使用 super (参数传递)(或类似)的正确方法的重复,因为标准方法在这里不起作用:
如果没有super
调用,父类就无法知道它应该初始化的参数:
python - if 语句:数组是否有单位/维度(品脱)
我的变量 C0 以 pint.UnitRegistry 单位 mol/L 定义。我需要在函数中使用它,但为了让 Python 不会在通用函数的不一致单位上调用我,我必须在函数中使用单位定义一个新变量,如下所示。
我想添加一个 if 语句,这样我就不会以 r(C0,t) 中的 C 为单位 mol^2/L^2 结束。我所拥有的是
但是当我用 C0 运行它时,它告诉我 C0 没有称为无量纲的属性。我应该如何编辑我的 if 语句,以便它可以检查任何类型的单位输入?
追溯:
python - Python:Pint 中的 Pandas 支持
我试图在此处重现 Python Pint 库中描述的示例。
在运行以下行时,在“从 csv 读取”部分中:
我收到以下消息错误:
AttributeError:“DataFrame”对象没有属性“品脱”
有没有人解决这个问题?
提前致谢!
此致。
python - 装饰器没有以预期单位返回值
以下代码使用pint将质量流量转换为体积流量。要将质量转换为体积,必须计算气体的密度。计算返回所需单位的正确值。
但是,当我以与 for 相同的方式申请@ureg.wraps
在函数上使用装饰器时,该值是正确的,但单位不是所需的单位。density
volumetric_flow_rate
以下版本的装饰器都为density
函数产生相同的结果(不正确的返回单位):
以下版本的装饰器引发错误
TypeError:包装'ret'参数必须是str或Unit类型,而不是<class'pint.quantity.build_quantity_class.<locals>.Quantity'>(1.0公斤/米** 3)
使用该错误消息,我定义了一个自定义单位 mass_flow
以下装饰器不会引发错误,但是它们仍然产生了不正确的单位(尽管现在使用mass_flow
“单位”。
我尝试的最后一次尝试是在函数R
之外定义P
。没想到它会改变答案,期望是正确的。
问题:
如何以与density
函数类似的方式为函数定义装饰器,volumetric_flow_rate
以便函数体更干净,并且不需要我进行内部单位转换?
此外,如果volumetric_flow_rate
函数具有复杂的返回单元m^3/sec
,为什么kg/m^3
该函数不能工作density
?
Python 3.7.0,品脱 0.10.1