如何记录具有尺寸的单位?

How to take log of a unit with dimensions?

我有一个带开尔文单位的温度变量。我需要用 np.log10 获取它的 log10,但如果数字有维度,它就不起作用。从变量中删除维度以便记录它的最简单方法是什么?

例子

import astropy.units as u
import numpy as np

temp = 6000 * u.K
np.log10(temp)

显示错误信息:

UnitTypeError: Can only apply 'log10' function to dimensionless quantities

您可以使用 .value 删除维度:

>>> np.log10(temp.value)
3.7781512503836434

或除以u.K使其无量纲:

>>> np.log10(temp / u.K)
<Quantity 3.7781512503836434>

您还可以使用 to_value()

获取不带单位的实际值

Signature: to_value(unit=None, equivalencies=[])

In [33]: temp.to_value()
Out[33]: 6000.0

In [34]: np.log10(temp.to_value())
Out[34]: 3.7781512503836439

这还提供了在某些时候需要时更改单位的灵活性!