Как выполнить линейную интерполяцию в Python (с примером)

Как выполнить линейную интерполяцию в Python (с примером)

Линейная интерполяция — это процесс оценки неизвестного значения функции между двумя известными значениями.

Имея два известных значения (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: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.