Преобразование единицы в Python

Я работаю над проектом, который позволяет пользователям отслеживать различные типы данных со временем. Часть основной идеи - то, что пользователь должен смочь ввести данные с помощью любых единиц, что они должны. Я смотрел на обе единицы:

http://pypi.python.org/pypi/units/

и количества:

http://pypi.python.org/pypi/quantities/

Однако я не уверен лучший способ пойти. Из того, что я могу сказать, количества более сложно, но включает лучший первоначальный список единиц.

46
задан Jon Seigel 28 March 2010 в 22:01
поделиться

2 ответа

Я приветствую использование явных единиц в приложениях для научных вычислений. Использование явных единиц аналогично чистке зубов. Это добавляет немного скуки, но безопасность типов, которую вы получаете, может сэкономить много проблем в долгосрочной перспективе. Например, не врезать орбитальные аппараты стоимостью 125 миллионов долларов в планеты .

Вам также, вероятно, следует проверить эти два других пакета единиц / количеств Python:

Unum

Scientific.Physics.PhysicalQuantity

Однажды я исследовал Scientific.Physics.PhysicalQuantity. Это не совсем соответствовало моим потребностям, но могло удовлетворить ваши. Из краткого описания сложно сказать, какие функции вам нужны.

Я закончил тем, что написал свой собственный пакет python для преобразования единиц измерения и анализа размеров, но он еще не упакован для выпуска. Мы используем мою систему единиц в привязках Python для нашей системы OpenMM для молекулярной механики с ускорением на GPU. Вы можете просмотреть svn-репозиторий моего кода модулей Python по адресу:

Модули Python SimTK

В конечном итоге я собираюсь упаковать его для распространения. Если вам это интересно, дайте мне знать. Это могло бы побудить меня упаковать его раньше.Функции, которые я искал, когда разрабатывал систему единиц SimTK python, включали следующее:

  1. Единицы НЕ обязательно хранятся в единицах СИ внутри. Это очень важно для меня, потому что одна из важных областей применения для нас находится на молекулярном уровне. Внутреннее использование единиц СИ может привести к переполнению экспоненты в обычно используемых вычислениях молекулярной силы. Внутренне все системы единиц в SimTK одинаково важны.
  2. Мне нужна была такая же мощность и гибкость, как у системы Boost.Units в C ++. И потому, что я знаком с этой системой, и потому, что она была разработана под пристальным вниманием большой группы блестящих инженеров. Boost.Units - это хорошо продуманная система размерного анализа второго поколения. Таким образом, я могу утверждать, что система единиц SimTK - это система третьего поколения :). Имейте в виду, что хотя Boost.Units является системой с «нулевыми накладными расходами» и не требует затрат времени выполнения, все реализации количества Python, включая модули SimTK, вероятно, требуют затрат времени выполнения.
  3. Мне нужны размерные Quantities, совместимые с массивами numpy, но не обязательно требующие пакета python numpy. Другими словами, количество может быть основано либо на numpy-массивах, либо на встроенных типах python.

Какие функции важны для вас?

29
ответ дан 26 November 2019 в 20:32
поделиться

Я думаю, что вы должны использовать количество, потому что количество имеет некоторые единицы, связанные с ним.

Например, давление будет иметь количество, которое можно было ввести и преобразовать в и разные единицы (PA, PSI, ATM и т. Д.). Вероятно, вы можете создать новые величины, относящиеся к вашему приложению.

1
ответ дан 26 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: