python - astropy 适合多个 header

标签 python astropy fits

我正在尝试在 Python 中创建 FITS 文件,但在将 header 和 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: Verification reported errors: HDUList's element 1 is not an extension HDU. Note: astropy.io.fits uses zero-based indexing.

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

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

最佳答案

注意错误消息:

VerifyError: Verification reported errors: HDUList's element 1 is not an extension HDU. Note: astropy.io.fits uses zero-based indexing.

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 - astropy 适合多个 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49999408/

相关文章:

python - 中值组合适合 python 中的图像

python - 使用 PyFITS 向 FITS 表添加列

python - Python分割字符串方法的难点

python - 使用 astropy.fits 和 numpy 对 SWIFT 拟合图像应用重合校正

Python:remove() 似乎不起作用

python - 随时间传播卫星目录的有效方法

astronomy - 使用 PyEphem 在世界地图上获取太阳的纬度和经度

python - 从pyfits数据表中获取随机子样本

python - 使用 ctypes 将音频数据从 Python 传递到 C

python - Python 中列表理解的错误处理