熵数量就地转换

时间:2018-04-27 19:58:17

标签: astropy

有没有办法将天文数量转换为另一组单位"就地"? to方法始终返回副本,因此不太有用。类似的东西:

import astropy.units as u
data = [1, 2, 3]*u.g
data.convert_to('kg')

Pintyt.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"但也许我错过了一些东西。

1 个答案:

答案 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打开一个问题。