Je sais donc quel est le gradient d'une fonction (mathématique), donc je pense que je devrais savoir ce que numpy.gradient
Est-ce que. Mais non. Le documentation n'est pas vraiment utile non plus:
Renvoie le gradient d'un tableau à N dimensions.
Quel est le gradient d'un tableau? Quand est numpy.gradient
utile?
Le gradient est calculé en utilisant les différences centrales à l'intérieur et les premières différences aux limites.
et
La distance par défaut est 1
Ceci signifie qu'à l'intérieur il est calculé comme
où h = 1,0
et aux frontières
Aussi dans la documentation1:
>>> y = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
>>> j = np.gradient(y)
>>> j
array([ 1. , 1.5, 2.5, 3.5, 4.5, 5. ])
y
)/(changement dans x
).x
, ici, est l'index, donc la différence entre les valeurs adjacentes est de 1.
Aux limites, la première différence est calculée. Cela signifie qu'à chaque extrémité du tableau, le gradient donné est simplement la différence entre les deux valeurs finales (divisée par 1)
Ainsi, le gradient de y
, ci-dessus, est calculé ainsi:
j[0] = (y[1]-y[0])/1 = (2-1)/1 = 1
j[1] = (y[2]-y[0])/2 = (4-1)/2 = 1.5
j[2] = (y[3]-y[1])/2 = (7-2)/2 = 2.5
j[3] = (y[4]-y[2])/2 = (11-4)/2 = 3.5
j[4] = (y[5]-y[3])/2 = (16-7)/2 = 4.5
j[5] = (y[5]-y[4])/1 = (16-11)/1 = 5
Vous pouvez trouver les minima de toutes les valeurs absolues dans le tableau résultant pour trouver les points de retournement d'une courbe, par exemple.
1Le tableau est en fait appelé x
dans l'exemple de la documentation, je l'ai changé en y
pour éviter toute confusion.
Considérez le tableau à N dimensions comme une matrice. Alors le gradient n'est rien d'autre que différenciation matricielle
Pour une bonne explication, regardez gradient description dans la documentation de matlab.