Мне было интересно, есть ли у numpy или scipy метод в своих библиотеках, чтобы найти числовую производную от списка значений с неравномерным интервалом. Идея состоит в том, чтобы подавать метки времени, соответствующие значениям, а затем для использования временных меток для поиска числовой производной.Производящая функция 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 для расчета число 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])
SciPy-х UnivariateSpline.derivative
простой способ найти производную любого набора данных (х -axis необходимо заказать так, чтобы он увеличивался).
x = [1, 3, 8, 10]
y = [0, 8, 12, 4]
z = scipy.interpolate.UnivariateSpline.derivative(x,y)
dz = z.derivative(n)
где п есть порядок производной
С нового выпуска NumPy (1.13), numpy.gradient
имеет эту функцию, реализованный (documentation):
>>> #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
.
Так что это сильно отличается от его более ранней версии, innt? Например, я использую 1.11.3, и его документ предполагает, что 'np.gradient (y, x)' обрабатывает этот 'x' как delta x, а не координату' y'. Это довольно странная ловушка, если вы не обращаете внимания на версию, тогда результаты полностью и молчат. – Jason
@ Джейсон действительно, я сам [упал на эту ловушку] (https://stackoverflow.com/q/45776214/5099168). Я только проблема для старых версий, запускающих код для новой версии, так как новая версия обратно совместима (afaik). Если x было единственным числом, это угрожало бы ему как delta x. – Neinstein
Я буквально ударил кнопку отправки, чтобы опубликовать новый вопрос (здесь https://stackoverflow.com/q/46701906/2005415) 1 секунду, прежде чем замечать ваш ответ. Я не уверен, должен ли я удалить его или сохранить его? Но это очень неприятная ошибка, я не знаю, что делать, написав мою собственную реализацию? – Jason
- 1. NumPy или SciPy для вычисления взвешенной медианы
- 2. Numpy и SciPy матрицы инверсии функция различие
- 3. Функция плотности вероятности numpy гистограмма/scipy stats
- 4. неравномерного массив, как функция concatAll
- 5. python numpy импорт неравномерного (данных отсутствует) массив
- 6. Входная функция для SciPy расчетов
- 7. Numpy/Scipy Connected Components
- 8. Расчет склонов в Numpy (или Scipy)
- 9. Накопительный продукт с использованием Numpy или Scipy
- 10. конкретный метод для numpy, scipy resampling
- 11. Python Numpy Пуассоновская регрессия, производящая плохие числа
- 12. Функция корреляции Scipy медленная
- 13. Вычисление определенной последовательности Производящая функция
- 14. Факториальная функция, производящая неправильные результаты
- 15. python numpy/scipy curve fitting
- 16. Внесение numpy и scipy
- 17. Кривая сглаживания для matplotlib.pyplot с использованием pandas или numpy/scipy
- 18. Есть ли набор тестов для numpy/scipy?
- 19. Задача назначения, функция numpy?
- 20. Быстрый индексированный dot-продукт для numpy/scipy
- 21. Функция интервала
- 22. Непоследовательные результаты для функции Numpy/Scipy eigh
- 23. Scipy/Numpy FFT Frequency Analysis
- 24. Рекомендация по импорту SciPy/NumPy
- 25. SciPy SVD vs Numpy SVD
- 26. Стандартизованный numpy/scipy декоратор `asarray`
- 27. график графиков в numpy, scipy
- 28. scipy/numpy linalg.eigval интерпретация результатов
- 29. py2exe import numpy и scipy
- 30. Функция градиента fmin_cg в scipy
что такое прямое и центральное различие точно? – user3123955
@ user3123955 [проверьте здесь, например] (http://dmpeli.mcmaster.ca/Matlab/Math4Q3/NumMethods/Lecture3-1.html), чтобы получить обзор этих численных методов –
'y [1:] - y [ : -1] 'обеспечивается более разборчивым' numpy.diff (y) '. – EOL