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


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

Учитывая два известных значения (x 1 , y 1 ) и (x 2 , y 2 ), мы можем оценить значение y для точки x, используя следующую формулу:

y = y 1 + (xx 1 ) (y 2 -y 1 )/(x 2 -x 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 в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *