我有一个过滤器。它们应该具有相同的结构,但它们的缩放比例不同,数据来自 top filter图中显示的值在 10000 之前被截断。我只是将值设置为 10000 处的零,但我想推断顶部过滤器,以便遵循 bottom filter 的结构。 。链接中提供了与每个过滤器相关的数据。我不知道如何从底部过滤器中的数据获取尾部结构并将其应用于顶部过滤器,考虑到它们的缩放比例不同。请注意,我需要使用上面板过滤器,因为我的其他过滤器已进行相应校准。
我可以使用 interp1d
获得较低过滤器的插值,但我不知道应该如何正确地重新调整它以用于顶部过滤器。
from scipy.interpolate import interp1d
from scipy import arange
import numpy as np
u=np.loadtxt('WFI_I.res')
f=interp1d(u[:,0], u[:,1])
x=arange(7050, 12000)
y=f(x)
如果有任何建议或代码,我将不胜感激。
最佳答案
假设您有两个滤波器数组,y 值为 filter1
和 filter2
,x(波长)值为 wave1
和 wave2
,那么类似这样的东西应该可以工作(尽管未经测试):
wave_match = 9500 # wavelength for matching
index1 = np.searchsorted(wave1, wave_match)
index2 = np.searchsorted(wave2, wave_match)
match1 = filter1[index1]
match2 = filter2[index2]
scale = match1 / match2
wave12 = np.concatenate([wave1[:index1], wave2[index2:]])
filter12 = np.concatenate([filter1[:index1], scale * filter2[index2:]])
关于python - 从一个数据的结构中找到外推并将其应用于另一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783350/