Астропия количества на месте преобразования - PullRequest
0 голосов
/ 27 апреля 2018

Есть ли способ преобразовать астропическую величину в другой набор единиц "на месте"? Метод 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')

Беглый взгляд на документы по астропии и исходный код указывает, что ответ «нет», но, возможно, я что-то упускаю.

1 Ответ

0 голосов
/ 28 апреля 2018

Есть несколько способов сделать это в данный момент. Учитывая ваш пример:

>>> 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) здесь , и я думаю, что был сделан вывод, что метод set_unit был бы полезным дополнением, но он еще не реализован. Таким образом, вы можете открыть вопрос с этим запросом функции здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...