合併と定義単位

通常のPythonデジタル演算子を使用して単位と数を組み合わせることができます。

例を引く

単位と数量を組み合わせるには、以下の操作を実行してください。

>>> from astropy import units as u
>>> fluxunit = u.erg / (u.cm ** 2 * u.s)
>>> fluxunit
Unit("erg / (cm2 s)")
>>> 52.0 * fluxunit  
<Quantity  52. erg / (cm2 s)>
>>> 52.0 * fluxunit / u.s  
<Quantity  52. erg / (cm2 s2)>

単位は点数のべき乗をサポートし,複雑な演算ではその精度を保っている.そのためには,使用を推奨する fractions.Fraction 物体です。

例を引く

使用 fractions.Fraction 対象::

>>> from fractions import Fraction
>>> Franklin = u.g ** Fraction(1, 2) * u.cm ** Fraction(3, 2) * u.s ** -1

注釈

分母が10未満の分数と実際に同じ浮動小数点べき乗は暗黙的に変換される Fraction ボンネットの下の物体。したがって,以下は等価である.

>>> x = u.m ** Fraction(1, 3)
>>> x.powers
[Fraction(1, 3)]
>>> x = u.m ** (1. / 3.)
>>> x.powers
[Fraction(1, 3)]

ユーザは基本単位でも複合単位でも新しい単位を自由に定義することができる. def_unit 機能します。

例を引く

新しい単位を定義するには、ご利用ください def_unit 機能::

>>> bakers_fortnight = u.def_unit('bakers_fortnight', 13 * u.day)

文字列を追加すると、新しいデバイスの名前が印刷装置に表示されます。

>>> 10. * bakers_fortnight  
<Quantity  10. bakers_fortnight>

新しい基本単位を作ることもできます

>>> titter = u.def_unit('titter')
>>> chuckle = u.def_unit('chuckle', 5 * titter)
>>> laugh = u.def_unit('laugh', 4 * chuckle)
>>> guffaw = u.def_unit('guffaw', 3 * laugh)
>>> rofl = u.def_unit('rofl', 4 * guffaw)
>>> death_by_laughing = u.def_unit('death_by_laughing', 10 * rofl)
>>> (1. * rofl).to(titter)  
<Quantity  240. titter>

ユーザは単位の定義とそれを見ることができる. decomposition 経由:

>>> rofl.represents
Unit("4 guffaw")
>>> rofl.decompose()
Unit("240 titter")

デフォルトの場合,以下の方法でカスタム単位を探索することはない. find_equivalent_units それがそうです。しかし,呼び出すことで add_enabled_units **

>>> kmph = u.def_unit('kmph', u.km / u.h)
>>> (u.m / u.s).find_equivalent_units()
There are no equivalent units
>>> u.add_enabled_units([kmph])
<astropy.units.core._UnitContext object at ...>
>>> (u.m / u.s).find_equivalent_units()
  Primary name | Unit definition | Aliases
[
  kmph         | 0.277778 m / s  |         ,
]