二维数组的 Numpy 梯度

Numpy gradient of 2D array

我有一个二维数组,它是一个正弦曲线图案,我想绘制该函数的 x 和 y 梯度。

从之前的一些函数中我得到了一个名为 'image_data' 的二维数组,例如:

def get_image(params):
    # do some maths on params
    return(image)

params = (a, b, c)
image_data = get_image(params)

然后我在图像上使用 numpy.gradient 来获得渐变:

gradients = numpy.gradient(image_data)
x_grad = gradients[0]
y_grad = gradients[1]

绘制所有三个看起来像:

但我不确定它是否正确。因为这个图案不是 45 度角,所以我希望 x 和 y 梯度不同。

在我看来,x_gradient[i][j]应该是image_data[i][j]相对于两侧索引的梯度,而y_gradient[i][j]应该是相对于上方和下方索引的梯度.

由于图案稍微倾斜,您可以在 image_data 中看到函数的梯度以不同的速率变化。

我是在误解我的数据还是不理解 numpy.gradient 输出?

谢谢!

我不确定您为什么认为渐变应该不同。但是给定函数的梯度形状应该具有不同级别的相同形状。让我们分析一下:

所以你可以看到它们的形状相同。添加颜色级别,您会看到差异。