分解と合成ユニット

1つの単位をその約束できない部分にまとめる

属性は単位や数をその不可約部分に分解することができる. Unit.decompose あるいは…。 Quantity.decompose 方法です。

実例.

1つの単位を分解するために Unit.decompose **

>>> from astropy import units as u
>>> u.Ry
Unit("Ry")
>>> u.Ry.decompose()
Unit("2.17987e-18 kg m2 / s2")

分解するセルの選択を制限することができ,方法は使用する. bases キーワードパラメータ::

>>> u.Ry.decompose(bases=[u.m, u.N])
Unit("2.17987e-18 m N")

これは特定のシステムに分解するのにも有用である.例えば,CGS単位でRydberg単位を分解する.

>>> u.Ry.decompose(bases=u.cgs.bases)
Unit("2.17987e-11 cm2 g / s2")

最後に、単位がどのように定義されているのか知りたいなら、

>>> u.Ry.represents
Unit("13.6057 eV")

自動的にユニットをより複雑なユニットに組み合わせる

逆に使えます compose 方法です。同じ良い結果が複数ある可能性があるので、いつも1つのリストに戻ります。

実例.

…で一つの単位を組み替える compose **

>>> x = u.Ry.decompose()
>>> x.compose()
[Unit("Ry"),
 Unit("2.17987e-18 J"),
 Unit("2.17987e-11 erg"),
 Unit("13.6057 eV")]

他にも興味深い例があります

>>> (u.s ** -1).compose()  
[Unit("Bq"), Unit("Hz"), Unit("3.7e+10 Ci")]

組み合わせることができます 等価物. **

>>> (u.s ** -1).compose(equivalencies=u.spectral())  
[Unit("m"),
 Unit("Hz"),
 Unit("J"),
 Unit("Bq"),
 Unit("3.24078e-17 pc"),
 Unit("1.057e-16 lyr"),
 Unit("6.68459e-12 AU"),
 Unit("1.4378e-09 solRad"),
 Unit("0.01 k"),
 Unit("100 cm"),
 Unit("1e+06 micron"),
 Unit("1e+07 erg"),
 Unit("1e+10 Angstrom"),
 Unit("3.7e+10 Ci"),
 Unit("4.58743e+17 Ry"),
 Unit("6.24151e+18 eV")]

想像できる任意の派生単位に名前があるわけではない.この場合、システムは、単位を可能な限り少ない符号に減少させるために最善を尽くすであろう:

>>> (u.cd * u.sr * u.V * u.s).compose()
[Unit("lm Wb")]

システム間で変換する

この機能の上に構築されているのは,単位制間で変換を行う便利な方法である.

実例.

単位制間で変換するには、以下の操作を実行してください。

>>> u.Pa.to_system(u.cgs)
[Unit("10 P / s"), Unit("10 Ba")]

もう1つの速記方法は、多くの可能なマッチングのうちの最初のものにしか戻りません。

>>> u.Pa.cgs
Unit("10 P / s")

ただし,これは新しいシステムに分解し,できるだけ複雑なユニットに組み合わせることに相当する. to_system 最も有用な順序で順序付けされた結果を返すために、いくつかの追加の論理を追加する。

>>> u.Pa.decompose(bases=u.cgs.bases)
Unit("10 g / (cm s2)")
>>> _.compose(units=u.cgs)
[Unit("10 Ba"), Unit("10 P / s")]