You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将XY轴与数据一同写入FITS文件?

当然可以啦!在Astropy的FITS模块里,有几种常用的方法能把x、y轴数据和你的矩阵一起保存到FITS文件中,下面给你详细说说两种最实用的方式:

方法一:将轴数据存入主HDU的表头

如果你的x、y轴数据是小型一维数组,直接把它们存入主HDU的表头(Header)是最便捷的方式,表头可以存储自定义关键字和对应的数据,还能添加注释说明。

修改你的代码如下:

import numpy as np
from astropy.io import fits

test_matrix = np.random.uniform(0,1,[5,3])
x = np.arange(5,5+len(test_matrix[:,0]))
y = np.arange(5,5+len(test_matrix[0,:]))

# 创建存储矩阵的主HDU
hdu = fits.PrimaryHDU(test_matrix)

# 将x、y轴数据转成列表存入表头,同时添加注释
hdu.header['X_AXIS'] = x.tolist()
hdu.header.comments['X_AXIS'] = 'X axis values (start=5, length=5)'
hdu.header['Y_AXIS'] = y.tolist()
hdu.header.comments['Y_AXIS'] = 'Y axis values (start=5, length=3)'

# 写入文件,加上overwrite=True避免文件已存在时报错
hdu.writeto('TestFITS_with_header.fits', overwrite=True)

读取时可以这样获取轴数据:

with fits.open('TestFITS_with_header.fits') as hdul:
    matrix_data = hdul[0].data
    # 将表头中的列表转回numpy数组
    x_read = np.array(hdul[0].header['X_AXIS'])
    y_read = np.array(hdul[0].header['Y_AXIS'])

方法二:用扩展HDU独立存储轴数据

如果你的轴数据量较大,或者希望把轴数据作为独立的数据集来管理,推荐使用扩展HDU(Extension HDU)的方式。FITS文件支持多个HDU,我们可以用主HDU存矩阵,再创建单独的ImageHDU来存储x、y轴数据。

示例代码:

import numpy as np
from astropy.io import fits

test_matrix = np.random.uniform(0,1,[5,3])
x = np.arange(5,5+len(test_matrix[:,0]))
y = np.arange(5,5+len(test_matrix[0,:]))

# 主HDU存储矩阵数据
primary_hdu = fits.PrimaryHDU(test_matrix)
# 创建扩展HDU存储x轴数据,指定名称方便读取
x_hdu = fits.ImageHDU(x, name='X_AXIS')
x_hdu.header.comments['EXTNAME'] = 'Independent X axis dataset'
# 创建扩展HDU存储y轴数据
y_hdu = fits.ImageHDU(y, name='Y_AXIS')
y_hdu.header.comments['EXTNAME'] = 'Independent Y axis dataset'

# 将所有HDU打包成HDU列表
hdul = fits.HDUList([primary_hdu, x_hdu, y_hdu])

# 写入文件
hdul.writeto('TestFITS_with_extensions.fits', overwrite=True)

读取时可以通过名称快速定位扩展HDU:

with fits.open('TestFITS_with_extensions.fits') as hdul:
    matrix_data = hdul[0].data
    # 通过名称获取扩展HDU的数据
    x_data = hdul['X_AXIS'].data
    y_data = hdul['Y_AXIS'].data

两种方法的适用场景

  • 表头存储:适合小型数组,操作简单,数据和矩阵绑定紧密;
  • 扩展HDU存储:适合大数据量,或者需要单独处理轴数据的场景,更符合FITS文件的标准结构,可读性更强。

内容的提问来源于stack exchange,提问作者user8188120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:06:20