我试图在Python中创建一个FITS文件但是在编译头文件和PrimaryHDU时我似乎遇到了问题。
我做了一个简单的例子,它会给出我得到的错误:
import numpy as np
from astropy.io import fits
a = np.ones([5,5])
hdu = fits.PrimaryHDU(a)
hdr = fits.Header()
hdr['NPIX1'] = 60
hdr['NPIX2'] = 60
hdr['CRPIX1'] = 0
hdr['CRPIX2'] = 0
primary_hdu = fits.PrimaryHDU(header=hdr)
hdul = fits.HDUList([primary_hdu, hdu])
hdul.writeto('table4.fits')
运行此代码时,出现以下错误:
的VerifyError: 验证报告错误: HDUList的元素1不是HDU的扩展。 注意:astropy.io.fits使用从零开始的索引。
我已经看到一些帖子声称这可能与PrimaryHDU在导出时需要成为HDUList中的第一个但查看我的代码有关,我相信我已经这样做了。
非常感谢任何帮助,谢谢。
答案 0 :(得分:4)
请注意错误消息:
VerifyError:验证报告错误:HDUList的元素1不是扩展HDU。注意:astropy.io.fits使用从零开始的索引。
HDUList
中的第二项也一个PrimaryHDU
,这不是有效的扩展程序HDU(Primary
这里基本上是第一个且唯一的)。
将该HDU设为ImageHDU
,事情将会奏效:
import numpy as np
from astropy.io import fits
a = np.ones([5,5])
hdu = fits.ImageHDU(a) # Don't use a `PrimaryHDU` here
hdr = fits.Header()
hdr['NPIX1'] = 60
hdr['NPIX2'] = 60
hdr['CRPIX1'] = 0
hdr['CRPIX2'] = 0
primary_hdu = fits.PrimaryHDU(header=hdr)
hdul = fits.HDUList([primary_hdu, hdu])
hdul.writeto('table4.fits')