Линейная интерполяция — это процесс оценки неизвестного значения функции между двумя известными значениями.
Имея два известных значения (x 1 , y 1 ) и (x 2 , y 2 ), мы можем оценить значение y для некоторой точки x, используя следующую формулу:
у = у 1 + (хх 1 )(у 2 -у 1 )/(х 2 -х 1 )
Мы можем использовать следующий базовый синтаксис для выполнения линейной интерполяции в Python:
import scipy. interpolate
y_interp = scipy. interpolate.interp1d (x, y)
#find y-value associated with x-value of 13
print(y_interp( 13 ))
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: линейная интерполяция в Python
Предположим, у нас есть следующие два списка значений в Python:
x = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
y = [4, 7, 11, 16, 22, 29, 38, 49, 63, 80]
Мы можем создать быстрый график x против y:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot (x, y, '-ob')

Теперь предположим, что мы хотим найти значение y, связанное с новым значением x, равным 13 .
Для этого мы можем использовать следующий код:
import scipy. interpolate
y_interp = scipy. interpolate.interp1d (x, y)
#find y-value associated with x-value of 13
print(y_interp( 13 ))
33.5
Расчетное значение y оказывается равным 33,5 .
Если мы добавим точку (13, 33,5) к нашему графику, она, похоже, будет хорошо соответствовать функции:
import matplotlib.pyplot as plt
#create plot of x vs. y
plt.plot (x, y, '-ob')
#add estimated y-value to plot
plt.plot (13, 33.5, 'ro')

Мы можем использовать эту точную формулу для выполнения линейной интерполяции для любого нового значения x.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами