Скопируйте заголовок FITS

Скажем, я прочитал файл 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 = ?


person usernumber    schedule 05.03.2019    source источник
comment
Возможно, модуль copy? import copy затем header_copy = copy.copy(cube.header)   -  person DavidG    schedule 05.03.2019
comment
Действительно, copy, кажется, делает то, что я ожидаю. Меня несколько озадачил тот факт, что поведение cube.header и cube.data не совпадает, когда я попытался их скопировать, но ответ оказался довольно простым.   -  person usernumber    schedule 05.03.2019


Ответы (1)


Класс Header из astropy.io.fits имеет функция копирования.

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
person usernumber    schedule 05.03.2019