Можно ли получить градиент между двумя точками, которые находятся на расстоянии более одного элемента друг от друга?
Простой массив:
f = np.array([4,5,8,1,5,3,2,5])
Я хочу запрограммировать следующее:
На границах: односторонние, как используется np.gradient
.
Значения рядом с граничными значениями: центральные различия, используемые np.gradient
для внутренних точек.
Для внутренних точек
((i-2)-(i+2))/4
Полученный результат:
f_res = np.array([1,2,0.25,-0.5,-1.5,1,1,3])
Документация для np.gradient: numpy.gradient
🤔 А знаете ли вы, что...
С Python можно создавать кросс-платформенные приложения для Windows, macOS и Linux.
Вы можете легко вычислить это вручную:
N = 2
out = np.gradient(f)
out[N:-N] = (f[2*N:]-f[:-2*N])/4
Выход:
array([ 1. , 2. , 0.25, -0.5 , -1.5 , 1. , 1. , 3. ])
Да, можно вычислить градиент между двумя точками, которые находятся на расстоянии более одного элемента друг от друга, но это требует немного большего объяснения в зависимости от контекста:
Математическое определение: В математике градиент обычно относится к вектору частных производных функции. Если у вас многомерный градиент, это вектор, указывающий в направлении наибольшей скорости увеличения функции. Градиент в двух точках обычно обсуждается с точки зрения того, как он изменяется (т. Е. Скорость изменения градиента или разница между градиентами), а не градиент «между» двумя точками.
Конечные разности (числовые производные). Если вы спрашиваете о численном вычислении производной (или скорости изменения) функции, вы можете вычислить ее между любыми двумя точками. Например, если у вас есть значение функции в ( x_1 ) и ( x_2 ), производная конечной разности (аппроксимация производной) между ними равна
Это называется аппроксимацией секущей линии. Если ( x_1 ) и ( x_2 ) не являются соседними, это дает градиент в большем интервале, а не «мгновенную» скорость изменения.
Векторное поле или поле градиента в пространстве. Если вы имеете дело с векторным полем или полем градиента в пространстве, вы можете определить путь между двумя точками и вычислить, как градиент ведет себя вдоль этого пути. Это включает в себя вычисление интеграла градиента вдоль выбранного пути.
Машинное обучение и нейронные сети. В глубоком обучении градиенты используются для оптимизации (например, обратного распространения ошибки). Если вы думаете о градиентном спуске, вы обычно вычисляете градиенты относительно отдельных параметров, которые обычно являются соседними с точки зрения их положения в пространстве параметров. Однако технически можно было бы учесть разницу в градиентах для параметров, несмежных в пространстве, но это не было бы обычной практикой.
#DestinationDataScience