具有多个标题的astropy FITS

问题描述 投票:1回答:1

我正在尝试用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中的第一个,但看着我的代码,我相信我已经这样做了。

任何帮助将在这里非常感谢,谢谢。

python astropy fits
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.