Функция Numpy или SciPy для неравномерного интервала?

Мне было интересно, есть ли у numpy или scipy метод в своих библиотеках, чтобы найти числовую производную от списка значений с неравномерным интервалом. Идея состоит в том, чтобы подавать метки времени, соответствующие значениям, а затем для использования временных меток для поиска числовой производной.

5 Solutions collect form web for “Функция Numpy или SciPy для неравномерного интервала?”

Вы можете создавать свои собственные функции с помощью numpy. Для производных с использованием форвардных различий (редактируйте благодаря @EOL, но обратите внимание, что функция NumPy diff() не является дифференцируемой функцией ):

 def diff_fwd(x, y): return np.diff(y)/np.diff(x) 

«центральные» различия (это не обязательно центрально, в зависимости от расстояния между данными):

 def diff_central(x, y): x0 = x[:-2] x1 = x[1:-1] x2 = x[2:] y0 = y[:-2] y1 = y[1:-1] y2 = y[2:] f = (x2 - x1)/(x2 - x0) return (1-f)*(y2 - y1)/(x2 - x1) + f*(y1 - y0)/(x1 - x0) 

где y содержит оценки функций и x соответствующие «времена», так что вы можете использовать произвольный интервал.

Это, вероятно, не предусмотрено, потому что вместо этого вы можете взять производную от вашей зависимой переменной (значения y), взять производную от вашей независимой переменной (в вашем конкретном случае, временные метки), а затем разделить первый вектор на второй ,

Определение производной:

 f' = dy / dx 

или в вашем случае:

 f'(t) = dy / dt 

Вы можете использовать функцию diff, чтобы вычислить каждую из ваших числовых dy, функцию diff, чтобы вычислить ваш численный dt, а затем элемент разделите эти массивы, чтобы определить f '(t) в каждой точке.

Это немного запоздало, но нашел ответ @ dllahr очень полезным и простым в использовании с numpy :

 >>> import numpy as np >>> y = [1, 2, 3, 4, 5] >>> dy = np.gradient(y) >>> x = [1, 2, 4, 8, 10] >>> dx = np.gradient(x) >>> dy/dx array([1., 0.66666667, 0.33333333, 0.33333333, 0.5]) 

UnivariateSpline.derivative от UnivariateSpline.derivative – это простой способ найти производную любого набора данных (ось x должна быть упорядочена так, чтобы она возрастала).

 x = [1, 3, 8, 10] y = [0, 8, 12, 4] z = scipy.interpolate.UnivariateSpline.derivative(x,y) dz = z.derivative(n) 

где n – порядок производной

ref: https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.interpolate.UnivariateSpline.derivative.html

Поскольку новая версия NumPy (1.13), numpy.gradient имеет эту функцию, реализованную ( документацию ):

 >>> #only numpy 1.13 and above >>> import numpy as np >>> y = [1, 3, 4, 6, 11] >>> x = [0, 1, 5, 10, 11] >>> np.gradient(y, x) array([ 2. , 1.65 , 0.31666667, 4.23333333, 5. ]) 

Здесь значения в x отмечают x-координаты y-значений по y .

  • Число баллов T ^ 2 для хотеллинга в python
  • Передача данных в реальном времени с Python на MATLAB
  • Быстрый алгоритм b-сплайна с numpy / scipy
  • построение сферы в питоне для орбитальной траектории
  • В Python, как я могу рассчитать корреляцию и статистическую значимость между двумя массивами данных?
  • Что такое более быстрый способ получить расположение уникальных строк в numpy
  • Метод наименьшего квадрата в python
  • Элементный максимум двух разреженных матриц
  •  
    Interesting Posts for Van-Lav

    Как реализовать необязательный первый аргумент в Python (воспроизведение поведения slice ())

    Как импортировать lxml xpath в пространство имен по умолчанию?

    Словарь Python Gensim word2vec

    Интерфейс C, C ++ с Python

    XLRDError: ожидаемая запись в BOF; найдено 0x4b50

    Деревья регрессии или регресстор случайного леса с категориальными входами

    Ошибка: невозможно подключиться к серверу cassandra. Неконфигурированный стол

    Как я могу получить секретную ссылку для трека, отправленного в Soundcloud в Python?

    Почему бы не использовать утверждение assert python в тестах в наши дни?

    Python BeautifulSoup эквивалентен lxml make_links_absolute

    Получение свойств фильма с помощью python и opencv

    Где модуль слоев, определенный в PyCaffe

    Выберите элемент с помощью частичного идентификатора, используя Selenium с python?

    Эффективность Python: списки против кортежей

    Python – Как передать строку в subprocess.Popen (используя аргумент stdin)?

    Python - лучший язык программирования в мире.