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

问题描述 投票:0回答:1

我正在学习创建拟合文件,并在令人讨厌的外观中查找:https://docs.astropy.org/en/stable/io/fits/但是我不明白format='20A''E'是什么意思。更改它们意味着我的fits文件是什么?答案似乎不在庞大的文档中。

这是文档教程中的代码:

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')
python astropy fits
1个回答
0
投票

您的问题的答案在文档here中。但是,这些是FITS格式的底层详细信息。如果您还不太熟悉FITS,而只想创建一个表,请使用更高级别的Table

例如,可以像这样创建同一张表:

Table

现在您具有的表重新表达完全不特定于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])
...})

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

顺便说一句,当您像以前那样制作表时,在大多数情况下很长时间都没有必要显式地创建>>> t.write('table.fits', format='fits') 对象。您可以像ColDefs一样将简单的列列表传递给BinTableHDU.from_columnsBinTableHDU.from_columns([col1, col2])类完全向用户公开的事实主要是遗留情况,或者出于某些非常特殊的目的。文档可能会做得更好,强调它并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.