我有一个包含 1024 列、每列 100 个值的数据矩阵,我尝试对每一列执行高斯拟合并将结果保存在新数组中。我的代码如下:
from astropy.io import fits
from astropy.modeling import models, fitting
import numpy as np
Image1 = fits.open('Image.fits')
Image_data = Image1.data[:,:]
x = np.linspace(-50,50,50)
Gauss_Model = models.Gaussian1D(amplitude=1000., mean=0, stddev=1.)
Fitting_Model = fitting.LevMarLSQFitter()
Fit_Data = Fitting_Model(Gauss_Model, x, Image_data[:,0])
这段代码工作得很好,并且适合 Image_data 中的第一列,但我希望它对 Image_data 中的所有 1024 列数据执行适合并将结果保存在新数组中。我尝试使用 for 循环,但没有成功。我非常感谢您提供有关如何执行此操作的帮助,谢谢!
最佳答案
您应该将结果存储在列表中:
Fit_Data = []
for i in range(0, Image_data.shape[1]):
Fit_Data.append(Fitting_Model(Gauss_Model, x, Image_data[:, i]))
要检索特定列的拟合数据结果,您可以调用 Fit_Data[32]
例如
关于python - 对矩阵中的多个数组连续执行高斯拟合并保存结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50330762/