让我们假设我有一个扩展名为fits的文件,数据由两个列组成,每个列都有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 3‘,这是另一个由100个元素组成的数组。
我该怎么做呢?
发布于 2014-08-09 09:50:13
正如Iguananaut所指出的,答案可以在这里找到:Table.html#merging表,但只是为了标记这个问题的答案:
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')发布于 2014-08-11 14:11:00
@Cehem的回答是正确的。但我只想补充一下,Astropy有一个更好的通用表格接口,您可能会发现它更容易使用(用于在其他用例中插入列)。
Astropy将PyFITS合并到astropy.io.fits模块中。但是,由于您还可以访问更好的Table接口,所以可以将最适合的表读入Astropy表类,如下所示:
>>> from astropy.table import Table
>>> table = Table.read('path/to/fits_file.fits')就是这样。您还可以将表写回FITS文件。当然,这目前并不支持所有类型的符合表,但它将适用于大多数--而且在未来所有。
https://stackoverflow.com/questions/25204612
复制相似问题