Это довольно нелогично и противоположно тому, что происходит в MATLAB. Код тестирования:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-20, 21, 1)
y = np.arange(-20, 21, 1)
X, Y = np.meshgrid(x, y)
Z = 6 -2 * X + Y + 2 * X ** 2 +3 * X * Y + Y ** 2
grad_X = np.gradient(Z)[0]
grad_Y = np.gradient(Z)[1]
# Point where to calculate the gradient
x0 = -2
y0 = 2
grad_X_x0 = grad_X[(X == x0) & (Y == y0)][0]
grad_Y_y0 = grad_Y[(X == x0) & (Y == y0)][0]