Python numpy интерполяция дает неправильный вывод - PullRequest
1 голос
/ 21 февраля 2020

У меня есть массив ввода и вывода. Я дал ниже сюжет. Я хочу интерполировать значение при х = 0. Я ожидал что-то вроде 16.7, но вместо этого дал 17.4881, пиковое значение. Что может быть не так.

Данные:

enter image description here

Мой код:

xdata = [0.101,-0.008,-0.111,-0.209,-0.303]
ydata = [16.5241,16.7987,17.0499,17.2793,17.4885]
xp = np.interp(0,xdata,ydata)
print(xp)

Текущий вывод:

  17.4885

Ожидаемый результат:

16.7 # around from plot

1 Ответ

3 голосов
/ 21 февраля 2020

Если вы посмотрите на документацию по функциям interp , там написано, что

X-координаты точек данных должны увеличиваться, если период аргумента не указан. В противном случае, xp будет внутренне отсортирован после нормализации границ periodi c с периодом xp = xp%.

Но ваши xdata находятся в порядке убывания, поэтому вам нужно изменить порядок в xdata и ydata

import numpy as np
xdata = [0.101,-0.008,-0.111,-0.209,-0.303][::-1]
ydata = [16.5241,16.7987,17.0499,17.2793,17.4885][::-1]
xp = np.interp(0,xdata,ydata)
print(xp)
# 16.778545871559633
...