Ответ 1
Градиент вычисляется с использованием центральных различий в интерьере и первые различия на границах.
и
Расстояние по умолчанию равно 1
Этот означает, что в интерьере он вычисляется как
где h = 1,0
и на границах
Итак, я знаю, что такое градиент (математической) функции, поэтому я чувствую, что должен знать, что делает numpy.gradient
. Но я этого не делаю. документация также не помогает:
Возвращает градиент N-мерного массива.
Что такое градиент массива? Когда numpy.gradient
полезно?
Градиент вычисляется с использованием центральных различий в интерьере и первые различия на границах.
и
Расстояние по умолчанию равно 1
Этот означает, что в интерьере он вычисляется как
где h = 1,0
и на границах
Также в документации:
>>> x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
>>> j = np.gradient(x)
>>> j
array([ 1. , 1.5, 2.5, 3.5, 4.5, 5. ])
x
)/(изменение y
). y
, здесь - индекс, поэтому разница между смежными значениями равна 1.
На границах вычисляется первое различие. Это означает, что на каждом конце массива заданный градиент просто равен разности между двумя конечными значениями (разделенными на 1)
Итак, приведенный выше градиент x
вычисляется так:
j[0] = (x[1]-x[0])/1 = (2-1)/1 = 1
j[1] = (x[2]-x[0])/2 = (4-1)/2 = 1.5
j[2] = (x[3]-x[1])/2 = (7-2)/2 = 2.5
j[3] = (x[4]-x[2])/2 = (11-4)/2 = 3.5
j[4] = (x[5]-x[3])/2 = (16-7)/2 = 4.5
j[5] = (x[5]-x[4])/1 = (16-11)/1 = 5
Вы могли бы найти минимумы всех абсолютных значений в результирующем массиве, например, чтобы найти точки поворота кривой.
Подумайте о N-мерном массиве в качестве матрицы. Тогда градиент - это не что иное, как матричное дифференцирование
Для хорошего объяснения посмотрите gradient описание в документации по matlab.