#python #units-of-measurement #astropy
#python #единицы измерения #astropy
Вопрос:
Я пытаюсь преобразовать inches
в mm
с помощью astropy. Во входных данных у меня есть единица измерения в виде строки («дюйм», «мм»). Я создаю для этого пример функции:
def astro_conv(self, amount: float, fromm: str, to: str) -> float:
u_from = u.Unit(fromm)
u_to = u.Unit(to)
return u_from.to(u_to, amount)
Я получил сообщение: {ValueError}'inch' did not parse as unit: At col 0, inch is not a valid unit.
У меня есть документация для проверки, и inch
она должна быть доступна: http://docs.astropy.org/en/stable/units/
Что я делаю не так?
Комментарии:
1. Из документации «»Этот пакет определяет используемые в разговорной речи имперские единицы. Они доступны в пространстве имен astropy.units.imperial, но не в пространстве имен astropy.units верхнего уровня, чтобы включить их:
import astropy.units as u, u.imperial.enable()
2. Да, вы правы! Я был слеп 🙂
Ответ №1:
Согласно документам, Astropy не включает имперские единицы, определенные по умолчанию. Я думаю, что это частично для уменьшения пространства имен units по умолчанию и накладных расходов, связанных с его созданием и поиском, и в этом случае в жертву приносятся имперские единицы, поскольку они по большей части меньше используются в астрономии:
Этот пакет определяет используемые в разговорной речи имперские единицы. Они доступны в пространстве имен astropy.units.imperial, но не в пространстве имен astropy.units верхнего уровня, например:
>>> import astropy.units as u
>>> mph = u.imperial.mile / u.hour
>>> mph
Unit("mi / h")
Чтобы включить их в compose и результаты
find_equivalent_units
, выполните:
>>> import astropy.units as u
>>> u.imperial.enable()