如何在使用数量时为单位指定标量乘数?

时间:2017-06-14 15:03:38

标签: python numpy units-of-measurement quantities

目标是处理以" 1000 / mm ^ 3"表示的细胞密度,即每立方毫米数千个。

目前我这样做是为了处理" 1 / mm ^ 3":

import quantities as pq
d1 = pq.Quantity(500000, "1/mm**3")

给出:

array(500000) * 1/mm**3

但我真正需要做的是接受单位为" 1000 / mm ^ 3"的值。这也应该是打印值的形式。当我尝试类似的东西时:

d1 = pq.Quantity(5, 1000/pq.mm**3)

我收到以下错误:

ValueError: units must be a scalar Quantity with unit magnitude, got 1000.0 1/mm**3

如果我尝试:

a = pq.Quantity(500, "1000/mm**3")

输出结果为:

array(500) * 1/mm**3

即。 1000只会被忽略。 知道我该如何解决这个问题?任何解决方法?

(该要求来自该领域的标准做法。)

1 个答案:

答案 0 :(得分:1)

我找到的一个可能的解决方案是创建新单位,例如:

k_per_mm3 = pq.UnitQuantity('1000/mm3', 1e3/pq.mm**3, symbol='1000/mm3')
d1 = pq.Quantity(500, k_per_mm3)

然后在打印'd1'时,我得到:

array(500) * 1000/mm3

这就是我的要求。

这是唯一的方法吗?或者可以用现有单位实现同样的目标(这是优选的)?