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))