5

我正在尝试使用 astropy.io 将数据附加到适合文件。

这是我的代码示例:

import numpy as np  
from astropy.io import fits  
a1 = np.array([1,2,4,8])  
a2 = np.array([0,1,2,3])  
hdulist = fits.BinTableHDU.from_columns(  
    [fits.Column(name='FIRST', format='E', array=a1),  
     fits.Column(name='SECOND', format='E', array=a2)])
hdulist.writeto('file.fits')

我得到的错误是

type object 'BinTableHDU' has no attribute 'from_columns'
  1. 这可能是我正在使用的 astropy.io 版本的问题吗?
  2. 有没有更简单的方法可以使用 astropy.io 向 fit 文件添加扩展名或列?

任何帮助,将不胜感激。

4

1 回答 1

7

你必须升级astropy。
我可以很好地运行您的示例;这是最新的astropy版本。

查看 0.4 的更改日志,肯定看起来您的 astropy 版本太旧了。日志说:

astropy.io.fits.new_table 函数现在已完全弃用(尽管考虑到它的使用范围,很长一段时间都不会删除)。

相反,请使用更明确的 BinTableHDU.from_columns 创建一个新的二进制表 HDU,并使用类似的 TableHDU.from_columns 创建一个新的 ASCII 表。这些否则接受与 new_table 相同的参数,现在只是这些参数的包装器。

暗示from_columns是在 0.4 中新引入的


总的来说,如果您确实使用的是 astropy 0.3 版,您可能需要升级到 1.0 版或(当前)1.1 版:

  • 虽然 0.3 大约只有 1.5 年的历史(如果你有 0.3.x 版本,会更年轻一些),但 astropy 开发的快速步伐使它有点过时了。界面发生了很大变化,而如今您在网上找到的示例很少适用于您的版本。

  • 由于 astropy 现在是 1.x(.y) 系列,这应该意味着 API 相对稳定:您只会遇到向后兼容性问题的微小变化。

  • 版本 1.0(.x) 是一个长期支持版本,包含两年的错误修复。Astropy 1.0 于 2015 年 2 月 18 日发布,因此,如果您正在寻找更高的稳定性,它将持续到 2017 年 2 月 18 日。(其他版本支持六个月的错误修复。但与前一点一样,如果您进行小版本升级顺便说一句,你也应该没问题。)

于 2015-12-18T05:37:26.563 回答