Что делает numpy.gradient?

Итак, я знаю, что такое градиент (математической) функции, поэтому я чувствую, что должен знать, что делает numpy.gradient. Но я этого не делаю. документация также не помогает:

Возвращает градиент N-мерного массива.

Что такое градиент массива? Когда numpy.gradient полезно?

Ответ 1

Градиент вычисляется с использованием центральных различий в интерьере и первые различия на границах.

и

Расстояние по умолчанию равно 1

Этот означает, что в интерьере он вычисляется как

enter image description here

где h = 1,0

и на границах

enter image description here

Ответ 2

Также в документации:

>>> 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)

  • Вдали от границ градиент для конкретного индекса задается разностью между значениями с обеих сторон и делением на 2.

Итак, приведенный выше градиент 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

Вы могли бы найти минимумы всех абсолютных значений в результирующем массиве, например, чтобы найти точки поворота кривой.

Ответ 3

Подумайте о N-мерном массиве в качестве матрицы. Тогда градиент - это не что иное, как матричное дифференцирование

Для хорошего объяснения посмотрите gradient описание в документации по matlab.