有没有办法将天文数量转换为另一组单位"就地"? to
方法始终返回副本,因此不太有用。类似的东西:
import astropy.units as u
data = [1, 2, 3]*u.g
data.convert_to('kg')
Pint
和yt.units
都有就地转换:
from pint import UnitRegistry
u = UnitRegistry()
data = [1, 2, 3]*u.g
data.ito('kg')
和
from yt.units import g
data = [1, 2, 3]*g
data.convert_to_units('kg')
粗略地看一下星座文档和源代码表明答案是" no"但也许我错过了一些东西。
答案 0 :(得分:3)
目前有几种方法可以做到。举个例子:
>>> import astropy.units as u
>>> data = [1, 2, 3] * u.g
>>> data
<Quantity [1., 2., 3.] g>
你可以这样做:
>>> data.value * u.kg
<Quantity [1., 2., 3.] kg>
或者这个:
>>> data * u.kg / data.unit
<Quantity [1., 2., 3.] kg>
或者这个:
>>> data._unit = u.kg
>>> data
<Quantity [1., 2., 3.] kg>
这些方法都没有复制Numpy数组,因此对于许多应用程序来说,性能都很好。
我认为没有可用的方法,因此无需访问私有数据成员即可设置data._unit
。稍后讨论了这一点(在Column和Quantity对象的上下文中)here,我认为结论是set_unit
方法是一个有用的补充,但它还没有实现。因此,您可以针对该功能请求here打开一个问题。