2D数组的Numpy梯度

oxosxuxt  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个2D阵列正弦图案,并希望绘制该函数的x和y梯度。我有一个2D数组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输出?

pprl5pva

pprl5pva1#

我不知道为什么你认为梯度应该是不同的。但是给定函数的梯度形状应该在不同的水平上具有相同的形状。让我们分析一下:

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

相关问题