我正在尝试在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')


运行此代码时,出现以下错误:


  验证错误:
      验证报告的错误:
      HDUList的元素1不是扩展HDU。
      注意:astropy.io.fits使用基于零的索引。


我看到一些帖子声称这可能与PrimaryHDU有关,需要在导出时成为HDUList中的第一个,但查看我的代码,我相信我已经这样做了。

在这里,任何帮助将不胜感激,谢谢。

最佳答案

注意错误消息:


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

关于python - 具有多个标题的令人讨厌的FITS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49999408/

10-08 20:38