astropy.units初学

在使用astropy处理fits文件的时候,经常用到几个包,其中一个就是units,这是单位量纲变换的包。

下面把最常用的几个命令罗列出来,以备用到的时候查看。

from astropy import units as u

u.km ------km

u.g**2

3.*u.pc*u.s / 4*u.erg

u.m / u.kg /u.s**2

3*(u.m) / (4*(u.s**3))

u.year-----------yr

np.array([2,3,4])*u.pc /u.year   与np联动

单位之间可以计算

x1 = 3.*u.m
x2 = 6.*u.cm / u.s / u.g**2

x3=x1*x2

x3里有cm和m,如果想转化为国际单位

x3.decompse()

或下面的例子:(3. * u.cm * u.pc / u.g / u.year**2).decompose()

如果想转为cm为单位

(x1*x2).to(u.cm**2 / u.kg**2 / u.s)

要提取一个量的值和量纲

x.value

x.unit

天文学上表示距离的常用单位秒差距pc

u.pc.decompose()

结果为3.0856776×10^16m

一个太阳的质量:u.M_sun

u.M_sun.decompose() = 1.9884099×10^30kg

要引入物理常数:

from astropy.constants import G    #万有引力常数

单位的变化,比如计算万有引力的时候,单位很复杂,要用N,即牛顿表示:

F.to(u.N)

那么不同量纲之间是否能转换呢,原则上是不可以的,但某些情况下也能做到,比如:

(450. * u.nm).to(u.GHz, equivalencies=u.spectral())          #纳米转化为GHz

q = (1e-18 * u.erg / u.cm**2 / u.s / u.AA)
q.to(u.Jy, equivalencies=u.spectral_density(u.mm, 1))

u.AA表示1埃

和numpy配合计算

np.sin(45*u.degree)  # 角度45°,如果不加u.degree,结果不是预期结果。

np.exp(4000*u.m/ (4* u.km))

posted @ 2020-10-22 22:45  cql_astro  阅读(1065)  评论(0)    收藏  举报