fits.Column()中的格式是什么意思?

2024-05-28 20:09:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习创建一个fits文件,我在astropy文档中查找:https://docs.astropy.org/en/stable/io/fits/ 但是我不明白{}和{}是什么意思。更改它们对我的fits文件意味着什么?答案似乎不在astropy文档中的任何地方

这是文档教程中的代码:

import numpy as np
from astropy.io import fits

a1 = np.array(['NGC1001', 'NGC1002', 'NGC1003'])
a2 = np.array([11.1, 12.3, 15.2])
col1 = fits.Column(name='target', format='20A', array=a1)
col2 = fits.Column(name='V_mag', format='E', array=a2)

cols = fits.ColDefs([col1, col2])

hdu = fits.BinTableHDU.from_columns(cols)

hdu.writeto('table3.fits')

Tags: 文件namefrom文档ioimportformata2
1条回答
网友
1楼 · 发布于 2024-05-28 20:09:41

你的问题的答案在文件here中。但是,这些都是FITS格式的低级细节。如果您还不太熟悉FITS,只想使用更高级别的^{}创建一个表

例如,可以创建相同的表,如下所示:

>>> from astropy.table import Table
>>>  t = Table({
...     'target': np.array([b'NGC1001', b'NGC1002', b'NGC1003'], dtype='S20'),
...     np.array([11.1, 12.3, 15.2])
...})

现在,您有了一个表表示,它完全不特定于FITS,但您可以将其写入FITS文件,如:

>>> t.write('table.fits', format='fits')

结果大致相同。它将处理将数据类型转换为适当的FITS列类型。如果您需要对FITS文件的确切格式进行细粒度控制,通常只需要使用低级库,但是您的里程可能会有所不同

顺便说一句,当您以这种方式创建一个表时,在大多数情况下,很长一段时间都没有必要显式地创建ColDefs对象。您只需将一个简单的列列表传递给BinTableHDU.from_columns,就像BinTableHDU.from_columns([col1, col2])ColDefs类向用户公开这一事实基本上是一种遗留情况,或者出于一些非常特殊的目的。文档可能会更好地强调它并不重要

相关问题 更多 >

    热门问题