首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyFITS: hdulist.writeto()

PyFITS: hdulist.writeto()
EN

Stack Overflow用户
提问于 2015-07-31 18:47:38
回答 2查看 2.8K关注 0票数 1

我正在从多扩展名的FITS文件中提取扩展,操作数据,并将数据(带有扩展名的头信息)保存到一个新的FITS文件中。

据我所知,pyfits.writeto()完成了这项任务。但是,当我以数组的形式给它一个数据参数时,它给出了错误:

代码语言:javascript
复制
    'AttributeError: 'numpy.ndarray' object has no attribute 'lower''

下面是我的代码示例:

代码语言:javascript
复制
    'file = 'hst_11166_54_wfc3_ir_f110w_drz.fits'
     hdulist = pyfits.open(dir + file)'
     sci = hdulist[1].data # science image data
     exp = hdulist[5].data # exposure time data
     sci = sci*exp # converts electrons/second to electrons
     file = 'test_counts.fits'

     hdulist.writeto(file,sci,clobber=True)

     hdulist.close()

我很感激你在这方面的帮助。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-04 14:27:57

您混淆了HDUList.writeto方法和writeto函数。

您正在调用的是在调用方法时返回的HDUList对象上的一个pyfits.open。您可以将此对象视为类似于原始文件的文件句柄。您可以对此对象进行适当的操作,或者将其写入一个新文件,或者将更新保存在适当的位置(如果您在mode='update'中打开该文件)。

另一方面,writeto函数不绑定到任何现有文件。它只是一个高级函数,用于将数组写入文件。在您的示例中,您可以编写电子计数数组,如下所示:

代码语言:javascript
复制
pyfits.writeto(filename, data)

这将与主HDU中的数组数据创建一个单一的HDU文件。

请注意文档本节顶部的警告:http://docs.astropy.org/en/v1.0.3/io/fits/index.html#convenience-functions

pyfits.writeto这样的函数在交互工作中很方便,但是不推荐在将重复运行的代码中使用,比如在脚本中。相反,先看看这些指示

票数 1
EN

Stack Overflow用户

发布于 2015-08-01 12:23:33

这可能是因为您应该使用hdulist.writeto(file, clobber=True)。只有一个必需的参数:hdulists.html#pyfits.HDUList.writeto (如果给出第二个参数),它用于output_verify (应该是字符串,而不是numpy数组)。这可能解释了你的AttributeError ...

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

https://stackoverflow.com/questions/31753093

复制
相关文章

相似问题

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