PyYITS:hdulist.writeto()
PyFITS: hdulist.writeto()
我正在从 multi-extension FITS 文件中提取扩展名,处理数据,并将数据(带有扩展名的 header 信息)保存到新的 FITS 文件中。
据我所知,pyfits.writeto() 完成了任务。但是,当我以数组的形式给它一个数据参数时,它给了我错误:
'AttributeError: 'numpy.ndarray' object has no attribute 'lower''
这是我的代码示例:
'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()
感谢您对此提供的任何帮助。提前致谢。
可能是因为你应该使用hdulist.writeto(file, clobber=True)
。只有一个必需的参数:
https://pythonhosted.org/pyfits/api_docs/api_hdulists.html#pyfits.HDUList.writeto
如果你给出第二个参数,它用于 output_verify
应该是一个字符串,而不是一个 numpy 数组。这可能解释了您的 AttributeError ...
.
您混淆了 HDUList.writeto
method, and the writeto
函数。
您呼叫的是method on the HDUList
object that is returned when you call pyfits.open
。您可以将此对象视为原始 drizzled FITS 文件的文件句柄。您可以就地操作此对象并将其写入新文件或就地保存更新(如果您在 mode='update'
中打开文件)。
另一方面,writeto
函数不绑定到任何现有文件。它只是一个将数组写入文件的高级函数。在您的示例中,您可以像这样写出电子计数数组:
pyfits.writeto(filename, data)
这将创建一个单 HDU FITS 文件,其中包含主 HDU 中的阵列数据。
请注意文档这一部分顶部的警告:http://docs.astropy.org/en/v1.0.3/io/fits/index.html#convenience-functions
像pyfits.writeto
这样的函数是为了交互工作的方便,但不推荐在会重复运行的代码中使用,比如在脚本中。而是先看看 these instructions。
我正在从 multi-extension FITS 文件中提取扩展名,处理数据,并将数据(带有扩展名的 header 信息)保存到新的 FITS 文件中。
据我所知,pyfits.writeto() 完成了任务。但是,当我以数组的形式给它一个数据参数时,它给了我错误:
'AttributeError: 'numpy.ndarray' object has no attribute 'lower''
这是我的代码示例:
'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()
感谢您对此提供的任何帮助。提前致谢。
可能是因为你应该使用hdulist.writeto(file, clobber=True)
。只有一个必需的参数:
https://pythonhosted.org/pyfits/api_docs/api_hdulists.html#pyfits.HDUList.writeto
如果你给出第二个参数,它用于 output_verify
应该是一个字符串,而不是一个 numpy 数组。这可能解释了您的 AttributeError ...
.
您混淆了 HDUList.writeto
method, and the writeto
函数。
您呼叫的是method on the HDUList
object that is returned when you call pyfits.open
。您可以将此对象视为原始 drizzled FITS 文件的文件句柄。您可以就地操作此对象并将其写入新文件或就地保存更新(如果您在 mode='update'
中打开文件)。
另一方面,writeto
函数不绑定到任何现有文件。它只是一个将数组写入文件的高级函数。在您的示例中,您可以像这样写出电子计数数组:
pyfits.writeto(filename, data)
这将创建一个单 HDU FITS 文件,其中包含主 HDU 中的阵列数据。
请注意文档这一部分顶部的警告:http://docs.astropy.org/en/v1.0.3/io/fits/index.html#convenience-functions
像pyfits.writeto
这样的函数是为了交互工作的方便,但不推荐在会重复运行的代码中使用,比如在脚本中。而是先看看 these instructions。