如何用PyFITS更新FITS数据数组?

2024-10-03 09:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用PyFITS从两个旧的FITS文件中创建一个新的FITS文件。在

import pyfits
from sys import stdout
from sys import argv
import time

file1 = argv[1]
file2 = argv[2]

hdu1 = pyfits.open(file1)
hdu2 = pyfits.open(file2)
new0 = hdu1[0]
new1 = hdu1[0]

sci1 = hdu1[0].data
sci2 = hdu2[0].data

for r in range(0, len(sci1)):
    for c in range(0, len(sci1[r])):
       add = sci1[r][c] + sci2[r][c]
       new0.data[r][c] = add
for r in range(0, len(sci1)):
    for c in range(0, len(sci1[r])):
       print "(" + str(r) + ", " + str(c) + ") FirstVal = " + str(sci1[r][c]) + " || SecondVal = " + str(sci2[r][c])
       print "\t New File/Add = " + str(new0.data[r][c])

它只输出第一个值,即sci1[r][c]。这意味着变量根本没有被修改。如何修改?我对使用FITS很陌生。在


Tags: 文件inimportfordatalenrangefits
1条回答
网友
1楼 · 发布于 2024-10-03 09:19:47

这里所做的是使sci1成为对new0.data的引用,这意味着对new0的赋值也会改变{},因此它修改了预期的变量,但打印循环会打印同一对象两次。 {5>如果你想复制一个引用的方法

这也不是pyfits用来表示图像的numpy。而不是循环,而是将操作应用到整个数组,这在大多数情况下更容易读取并且速度更快。如果要添加两个拟合图像,这些图像表示为numpy arrays inplace:

new0.data += new1.data
print new0.data

或者,如果要从两个输入的总和中创建新图像:

^{pr2}$

相关问题 更多 >