首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyFITS将列添加到FITS表

使用PyFITS将列添加到FITS表
EN

Stack Overflow用户
提问于 2014-08-08 13:26:34
回答 2查看 3.1K关注 0票数 3

让我们假设我有一个扩展名为fits的文件,数据由两个列组成,每个列都有100个元素

代码语言:javascript
复制
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个元素组成的数组。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-09 09:50:13

正如Iguananaut所指出的,答案可以在这里找到:Table.html#merging表,但只是为了标记这个问题的答案:

代码语言:javascript
复制
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')
票数 1
EN

Stack Overflow用户

发布于 2014-08-11 14:11:00

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

Astropy将PyFITS合并到astropy.io.fits模块中。但是,由于您还可以访问更好的Table接口,所以可以将最适合的表读入Astropy表类,如下所示:

代码语言:javascript
复制
>>> from astropy.table import Table
>>> table = Table.read('path/to/fits_file.fits')

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25204612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档