Сплайн-интерполяция Python с двумя разными наборами данных

У меня есть набор данных (звездный спектр) около 4000 точек. Я хочу интерполировать данные x и y (одинаковой длины) с этим новым списком, x_new, который имеет почти 17000 точек.

Я нашел numpy.interp, который выполняет эту работу, за исключением того, что является кусочно-линейной интерполяцией. Я хочу, чтобы он был гладким.

Какие-либо предложения?


person Daniel Thaagaard Andreasen    schedule 02.08.2012    source источник


Ответы (1)


scipy.interpolate.interp1d имеет параметр kind, который может быть установлен, например. "cubic".

Вместо предоставления значений x, которые вы хотите интерполировать, непосредственно в эту функцию, вы делаете это следующим образом:

>>> x = np.arange(0, 10)
>>> y = np.exp(-x / 3.0)
>>> f = interpolate.interp1d(x, y, "cubic")
>>> i = np.arange(0.5, 9.5, 1)
>>> f(i)
array([ 0.85826566,  0.61497421,  0.44064828,  0.31573829,  0.22623637,
        0.16210544,  0.11615363,  0.08322771,  0.05963526])

Это учебное пособие по интерполяции scipy, которое может быть полезным.

person Lauritz V. Thaulow    schedule 02.08.2012
comment
Да, мне нужен кубический вариант, но эта scipy-интерполяция принимает только два аргумента. Мне нужно дать ему три аргумента, таких как интерполяция numpy. - person Daniel Thaagaard Andreasen; 02.08.2012