繁体   English   中英

使用PyFITS将列添加到FITS表

[英]Adding columns to a FITS table with PyFITS

假设我有一个带有一个扩展名的拟合文件,数据由两列的表组成,每列有100个元素

data = pyfits.open('path2myfile')[1].data
head = pyfits.open('path2myfile')[1].header
print data['field1'] # print an array with 100 elements
print data['field2'] # print another array with 100 elements

现在我想在我的表中添加一个新列,让我们说数据['field3'],这是另一个包含100个元素的数组。

我到底该怎么做?

正如Iguananaut指出的那样,答案可以在这里找到: http ://pyfits.readthedocs.org/en/latest/users_guide/users_table.html#merging-tables但是只是将这个问题标记为已回答:

cols = [] 
cols.append(
    pyfits.Column(name='field3', format='D', array= arrayContainingTheData)
    )
orig_cols = data.columns
new_cols = pyfits.ColDefs(cols)
hdu = pyfits.BinTableHDU.from_columns(orig_cols + new_cols)
hdu.writeto('newtable.fits')

@ Cehem的回答是正确的。 但我只想补充一点,Astropy有一个更好的通用接口,你可能会发现它更容易使用(在其他用例中插入列)。

Astropy在astropy.io.fits模块中包含了PyFITS 但是,由于您还可以访问更好的Table接口,因此可以将大多数 FITS表读入Astropy表类,如下所示:

>>> from astropy.table import Table
>>> table = Table.read('path/to/fits_file.fits')

就是这样。 您还可以将表写回FITS文件。 当然,这目前不支持所有类型的FITS表,但它适用于大多数 - 以及将来所有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM