Numpy渐变的2D数组

时间:2018-06-15 11:50:06

标签: python arrays numpy gradient

我有一个正弦模式的2D数组,我想绘制该函数的x和y渐变。

从以前的一些函数我有一个名为' image_data'的2D数组,例如:

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]

绘制所有三个看起来像:

gradients

但我不确定它是否正确。因为这种模式不是45度,所以我希望x和y渐变不同。

在我看来,x_gradient[i][j]应该是image_data[i][j]相对于索引两侧的渐变,而y_gradient[i][j]应该是相对于上下索引的渐变。 / p>

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

我是否误解了我的数据或没有理解numpy.gradient输出?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

partial derivatives

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