我是SpecUtils的新用户,我只是尝试从FITS文件中读取光谱数据并绘制频谱,就像在SpecUtils的第一页上一样。
我的代码与SpecUtils的第一页相同,如下所示:
from astropy.io import fits
from astropy import units as u
import numpy as np
from matplotlib import pyplot as plt
from astropy.visualization import quantity_support
quantity_support() # for getting units on the axes below
f = fits.open('GIRAF.2021-02-14T01:00:34.723.fits')
# The spectrum is in the second HDU of this file.
specdata = f[0].data
f.close()
from specutils import Spectrum1D
lamb = 10**specdata['loglam'] * u.AA
flux = specdata['flux'] * 10**-17 * u.Unit('erg cm-2 s-1 AA-1')
spec = Spectrum1D(spectral_axis=lamb, flux=flux)但是,loglam和flux似乎不是该文件中的可接受标识符。
IndexError Traceback (most recent call last)
Input In [22], in <cell line: 2>()
1 from specutils import Spectrum1D
----> 2 lamb = 10**specdata['loglam'] * u.AA
3 flux = specdata['flux'] * 10**-17 * u.Unit('erg cm-2 s-1 AA-1')
4 spec = Spectrum1D(spectral_axis=lamb, flux=flux)
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices有没有人建议我如何找出我的文件中的标题,如何读取它们,然后最终绘制光谱数据?下面是到FITS文件的链接:链接
发布于 2022-07-30 04:35:56
在执行操作之前,尝试将变量specdata转换为numpy。
替换
specdata = f.data
至
specdata = np.array(f.data)
https://stackoverflow.com/questions/73101660
复制相似问题