我有一个LDAC适合目录,在 Python 代码中我需要将两个数组的元素作为两个新列添加到其中。
我在python中打开原始目录:
from astropy.io import fits
from astropy.table import Table
import astromatic_wrapper as aw
cat1='catalog.cat'
hdulist1 =fits.open(cat1)
data1=hdulist1[1].data
这两个数组已准备好并称为ra和dec。我给他们键名、格式和其他需要的信息,并将它们转换为列。最后,我将两个新列加入到原始表中(检查newtab.columns和newtab.data显示新列已成功附加)。
racol=fits.Column(name = 'ALPHA_J2000', format = '1D', unit = 'deg', disp = 'F11.7',array=ra)
deccol=fits.Column(name = 'DELTA_J2000', format = '1D', unit = 'deg', disp = 'F11.7',array=dec)
cols = fits.ColDefs([racol, deccol])
tbhdu = fits.BinTableHDU.from_columns(cols)
orig_cols= data1.columns
newtab = fits.BinTableHDU.from_columns(cols + orig_cols)
当我将新表保存到新目录中时:
newtab.writeto('newcatalog.cat')
它不是我需要的格式。如果我查看每个目录的描述
ldacdes -i
我看到catalog.cat:
> Reading catalog(s)
------------------Catalog information----------------
Filename:..............catalog.cat
Number of segments:....3
****** Table #1
Extension type:.........(Primary HDU)
Extension name:.........
****** Table #2
Extension type:.........BINTABLE
Extension name:.........OBJECTS
Number of dimensions:...2
Number of elements:.....24960
Number of data fields...23
Body size:..............4442880 bytes
****** Table #3
Extension type:.........BINTABLE
Extension name:.........FIELDS
Number of dimensions:...2
Number of elements:.....1
Number of data fields...4
Body size:..............28 bytes
> All done
对于新的:
> Reading catalog(s)
------------------Catalog information----------------
Filename:..............newcatalog.cat
Number of segments:....2
****** Table #1
Extension type:.........(Primary HDU)
Extension name:.........
****** Table #2
Extension type:.........BINTABLE
Extension name:.........
Number of dimensions:...2
Number of elements:.....24960
Number of data fields...25
Body size:..............4842240 bytes
> All done
如上所示,在原始目录catalog.cat中有三个表,我尝试在 OBJECTS 表中添加两列。
我需要newcatalog.cat也保持其他程序所需的相同结构,但它没有 OBJECTS 表,并且考虑到“元素数”和“数据字段数”,将 newtab 保存到表中# 2.
是否有任何控制输出适合目录格式的解决方案?
感谢您的帮助,我希望我能正确地构建关于 stackoverflow 的第一个问题。