【问题标题】:Copy a FITS header [duplicate]复制 FITS 标头 [重复]
【发布时间】:2019-07-26 21:41:51
【问题描述】:

假设我读了一个 FITS 文件

from astropy.io import fits
from astropy.utils.data import get_pkg_data_filename

image_file = get_pkg_data_filename('tutorials/FITS-images/HorseHead.fits')
cube = fits.open(image_file)[0]

我想复制它的标题,这样我就可以在不更改原始标题的情况下修改副本

header_copy = cube.header
header_copy.remove('OBJCTY')

不过,这也会修改cube.header

我将如何制作标题的实际副本,而不是创建指向标题的新指针?

header_copy = ?

【问题讨论】:

  • 可能是copy 模块? import copy 然后header_copy = copy.copy(cube.header)
  • 确实,copy 似乎符合我的预期。当我尝试复制 cube.header 和 cube.data 时,它们的行为并不相同,这让我很困惑,但结果却很简单。

标签: python python-3.x astropy


【解决方案1】:

来自astropy.io.fitsHeader 类有一个copy function

header_copy = cube.header.copy()
header_copy.remove('OBJCTY')

那么header_copy是对象的实际副本,而不是指向cube.header的指针

if cube.header['OBJECTY'] != header_copy['OBJECTY']:
    print('All ok')

>>> All ok

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2013-05-03
    • 2011-11-14
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多