从一个数据的结构中找出外推并将其应用于另一个数据

时间:2015-09-25 13:29:43

标签: python numpy scipy scikit-learn

我有一个过滤器。它们应该具有相同的结构,但它们的缩放比例不同,并且图中显示的top filter的数据在10000之前被截断。我只是将值设置为10000,但是我想推断顶部过滤以遵循bottom filter的结构。链接中提供了与每个过滤器相关的数据。我不知道如何从底部过滤器中的数据获得尾部结构并将其应用于顶部过滤器,考虑到它们的缩放比例不同。请注意,我需要使用上面板过滤器,因为我的其他过滤器已相应校准。 enter image description here

我可以使用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)

如果有任何建议或代码,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

假设您有两个y值为filter1filter2且x(波长)值为wave1wave2的滤镜数组,则此类内容应该有效(虽然未经测试):

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:]])