Кусочно линейная интерполяция python

numpy.interp#

One-dimensional linear interpolation for monotonically increasing sample points.

Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.

Parameters : x array_like

The x-coordinates at which to evaluate the interpolated values.

xp 1-D sequence of floats

The x-coordinates of the data points, must be increasing if argument period is not specified. Otherwise, xp is internally sorted after normalizing the periodic boundaries with xp = xp % period .

fp 1-D sequence of float or complex

The y-coordinates of the data points, same length as xp.

left optional float or complex corresponding to fp

Value to return for x < xp[0], default is fp[0].

right optional float or complex corresponding to fp

Value to return for x > xp[-1], default is fp[-1].

period None or float, optional

A period for the x-coordinates. This parameter allows the proper interpolation of angular x-coordinates. Parameters left and right are ignored if period is specified.

The interpolated values, same shape as x.

If xp and fp have different length If xp or fp are not 1-D sequences If period == 0

The x-coordinate sequence is expected to be increasing, but this is not explicitly enforced. However, if the sequence xp is non-increasing, interpolation results are meaningless.

Note that, since NaN is unsortable, xp also cannot contain NaNs.

A simple check for xp being strictly increasing is:

>>> xp = [1, 2, 3] >>> fp = [3, 2, 0] >>> np.interp(2.5, xp, fp) 1.0 >>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp) array([3. , 3. , 2.5 , 0.56, 0. ]) >>> UNDEF = -99.0 >>> np.interp(3.14, xp, fp, right=UNDEF) -99.0 

Plot an interpolant to the sine function:

>>> x = np.linspace(0, 2*np.pi, 10) >>> y = np.sin(x) >>> xvals = np.linspace(0, 2*np.pi, 50) >>> yinterp = np.interp(xvals, x, y) >>> import matplotlib.pyplot as plt >>> plt.plot(x, y, 'o') [] >>> plt.plot(xvals, yinterp, '-x') [] >>> plt.show() 

../../_images/numpy-interp-1_00_00.png

Interpolation with periodic x-coordinates:

>>> x = [-180, -170, -185, 185, -10, -5, 0, 365] >>> xp = [190, -190, 350, -350] >>> fp = [5, 10, 3, 4] >>> np.interp(x, xp, fp, period=360) array([7.5 , 5. , 8.75, 6.25, 3. , 3.25, 3.5 , 3.75]) 
>>> x = [1.5, 4.0] >>> xp = [2,3,5] >>> fp = [1.0j, 0, 2+3j] >>> np.interp(x, xp, fp) array([0.+1.j , 1.+1.5j]) 

Источник

numpy.interp

numpy

Одномерная линейная интерполяция для монотонно возрастающих точек выборки.

Возвращает одномерный кусочно-линейный интерполянт к функции с заданными дискретными точками данных ( xp , fp ), оцененными в x .

Parameters xarray_like

x-координаты,в которых оцениваются интерполированные значения.

xp 1-мерная последовательность поплавков

Координаты x точек данных должны увеличиваться, если period аргумента не указан. В противном случае xp внутренне сортируется после нормализации периодических границ с xp = xp % period .

fp 1-мерная последовательность чисел с плавающей запятой или комплексных

Y-координаты точек данных такой же длины, как xp .

левый необязательный поплавок или комплекс, соответствующий fp

правый необязательный поплавок или комплекс, соответствующий fp

Возвращаемое значение для x > xp[-1] , по умолчанию — fp[-1] .

период Нет или с плавающей запятой, необязательно

Период для координат x. Этот параметр позволяет правильно интерполировать угловые координаты x. Параметры left и right игнорируются, если указан period .

Интерполированные значения той же формы, что и x .

Если xp и fp имеют разную длину Если xp или fp не являются одномерными последовательностями Если period == 0

Ожидается, что последовательность x-координат будет увеличиваться, но это явно не применяется. Однако, если последовательность xp не возрастает, результаты интерполяции не имеют смысла.

Обратите внимание, что, поскольку NaN не подлежит сортировке, xp также не может содержать NaN.

Проверка проста для xp быть строго возрастающей является:

Examples

>>> xp = [1, 2, 3] >>> fp = [3, 2, 0] >>> np.interp(2.5, xp, fp) 1.0 >>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp) array([3. , 3. , 2.5 , 0.56, 0. ]) >>> UNDEF = -99.0 >>> np.interp(3.14, xp, fp, right=UNDEF) -99.0

Введите интерполянт в синусоидальную функцию:

>>> x = np.linspace(0, 2*np.pi, 10) >>> y = np.sin(x) >>> xvals = np.linspace(0, 2*np.pi, 50) >>> yinterp = np.interp(xvals, x, y) >>> import matplotlib.pyplot as plt >>> plt.plot(x, y, 'o') [] >>> plt.plot(xvals, yinterp, '-x') [] >>> plt.show() 
>>> x = [-180, -170, -185, 185, -10, -5, 0, 365] >>> xp = [190, -190, 350, -350] >>> fp = [5, 10, 3, 4] >>> np.interp(x, xp, fp, period=360) array([7.5 , 5. , 8.75, 6.25, 3. , 3.25, 3.5 , 3.75])
>>> x = [1.5, 4.0] >>> xp = [2,3,5] >>> fp = [1.0j, 0, 2+3j] >>> np.interp(x, xp, fp) array([0.+1.j , 1.+1.5j])

Источник

Как применить кусочно-линейное соответствие в Python?

Изображение 16723

Я пытаюсь установить кусочно-линейную подгонку, как показано на рис .1 для набора данных Эта цифра была получена путем установки на строках. Я попытался применить кусочно-линейную подгонку с использованием кода:

from scipy import optimize import matplotlib.pyplot as plt import numpy as np x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11, 12, 13, 14, 15]) y = np.array([5, 7, 9, 11, 13, 15, 28.92, 42.81, 56.7, 70.59, 84.47, 98.36, 112.25, 126.14, 140.03]) def linear_fit(x, a, b): return a * x + b fit_a, fit_b = optimize.curve_fit(linear_fit, x[0:5], y[0:5])[0] y_fit = fit_a * x[0:7] + fit_b fit_a, fit_b = optimize.curve_fit(linear_fit, x[6:14], y[6:14])[0] y_fit = np.append(y_fit, fit_a * x[6:14] + fit_b) figure = plt.figure(figsize=(5.15, 5.15)) figure.clf() plot = plt.subplot(111) ax1 = plt.gca() plot.plot(x, y, linestyle = '', linewidth = 0.25, markeredgecolor='none', marker = 'o', label = r'\textit') plot.plot(x, y_fit, linestyle = ':', linewidth = 0.25, markeredgecolor='none', marker = '', label = r'\textit') plot.set_ylabel('Y', labelpad = 6) plot.set_xlabel('X', labelpad = 6) figure.savefig('test.pdf', box_inches='tight') plt.close() 

Изображение 16724

Но это дало мне установку формы на рис. 2, я пробовал играть со значениями, но без изменений я не могу получить соответствие верхней линии. Самое важное требование для меня — как я могу получить Python для получения точки изменения градиента. По существу я хочу, чтобы Python распознавал и вписывал два линейных набора в соответствующий диапазон. Как это можно сделать в Python?

Источник

Русские Блоги

Реализация на Python кусочно-линейной интерполяции (при оценке ошибки)

функция

алгоритм

Этот алгоритм несложный. Можно даже сказать, что это очень грубо. Но реализация кода немного сложнее, чем раньше. В основном отражается на сегментации.

Эффект изображения

Код

import numpy as np from sympy import * import matplotlib.pyplot as plt def f(x): return 1 / (1 + x ** 2) def cal(begin, end): by = f(begin) ey = f(end) I = (n - end) / (begin - end) * by + (n - begin) / (end - begin) * ey return I def calnf(x): nf = [] for i in range(len(x) - 1): nf.append(cal(x[i], x[i + 1])) return nf def calf(f, x): y = [] for i in x: y.append(f.subs(n, i)) return y def nfSub(x, nf): tempx = np.array(range(11)) - 5 dx = [] for i in range(10): labelx = [] for j in range(len(x)): if x[j] >= tempx[i] and x[j] < tempx[i + 1]: labelx.append(x[j]) elif i == 9 and x[j] >= tempx[i] and x[j] 1]: labelx.append(x[j]) dx = dx + calf(nf[i], labelx) return np.array(dx) def draw(nf): plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = np.linspace(-5, 5, 101) y = f(x) Ly = nfSub(x, nf) plt.plot(x, y, label='Примитивный') plt.plot(x, Ly, label='Функция линейной интерполяции элементов') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.savefig('1.png') plt.show() def lossCal(nf): x = np.linspace(-5, 5, 101) y = f(x) Ly = nfSub(x, nf) Ly = np.array(Ly) temp = Ly - y temp = abs(temp) print(temp.mean()) if __name__ == '__main__': x = np.array(range(11)) - 5 y = f(x) n, m = symbols('n m') init_printing(use_unicode=True) nf = calnf(x) draw(nf) lossCal(nf) 

Интеллектуальная рекомендация

Используйте python для загрузки изображений (код для новичков)

Используйте python для загрузки изображений (код для новичков) Вскоре после того, как я только что изучил Python, в коде полно лазеек, и я надеюсь, что вы понимаете Вылезай картинку . .

Npoi читает пустой Excel пустая однооценная проблема

Npoi читает пустой Excel пустая однооценная проблема описание проблемы описание проблемы При чтении Excel через NPOI есть пустая ячейка в Excel, что приведет к тому, что сбор будет меньше, чем количес.

Реализация Rongyun Chat Server и клиента в практике проектов Android

24 апреля 2017 г. 00:58:19 Чтение номера: 2182 1 2 1. Подготовка перед разработкой Прежде всего, мы должны войти на официальный сайт Rongyun, чтобы загрузить соответствующий SDK, и создать соот.

Инициализация сбора, нет регулировки инициализации ADD () Исключение пустого указателя NullPointException

SIP через NAT SIP через firewall-SBC

FireWall&NAT FireWall — это технология пассивной защиты сетевой безопасности, расположенная на границе сети. Запустите стратегию контроля доступа между двумя сетями. Предотвращение не.

Вам также может понравиться

Python — Получить текст на вкладке DIV

Подготовительный знак знаний Компилировать функцию Функция компиляции используется для компиляции регулярных выражений, генерируют регулярное выражение (рисунок) объекта для совпа.

Некоторые небольшие операции примечания WordCloud

Используйте WordCloud для достижения визуализации данных Здесь вам нужна ваша собственная база данных. Эта база данных представляет собой классическую информацию Douban 250 Изображение обложки: Иди сю.

STM32

STM32 STM32 TIMx_CHx , ( / ) , (TIMx_CNT) / (TIMx_CCRx) , 。 STM32 1: ,FDTS TIMx_CR1 CKD[1:0] , 00 ,FDTS=FCK_INT。 ,TIMx_CCMR1 ICF[3:0] , N , , N=8 , IC1 1 , , , Fck_int , 8 1 , , , , 8 。 , 0000. 2: 。 3.

java интервью Вопрос 2

1. Сортировка пузырьков 2. Печать треугольник 3. Обнаружение строки является численной композицией 4. Форматирование даты Перепечатано: https://www.cnblogs.com/lakeslove/p/7354371.html.

Когда расположение окна переходит на страницу, данные передаются через сообщение

Сначала вставьте код: HTML часть: создать скрытый div js part: создайте форму виртуальной формы через js, отправьте напрямую .

Источник

Читайте также:  Java filter http method
Оцените статью