我正在学习创建拟合文件,并在令人讨厌的外观中查找: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')
您的问题的答案在文档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_columns
。 BinTableHDU.from_columns([col1, col2])
类完全向用户公开的事实主要是遗留情况,或者出于某些非常特殊的目的。文档可能会做得更好,强调它并不重要。