【发布时间】:2018-06-15 11:50:06
【问题描述】:
我有一个正弦模式的二维数组,我想绘制该函数的 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 输出?
谢谢!
【问题讨论】:
-
我猜你做的一切都是正确的。虽然这两个渐变可能 相同,但从图片中我不认为它们是相同的(尝试
print(np.all(x_gradient == y_gradient)))。但即使它们是,根据您的生成函数,这两个梯度当然有可能相同(看起来像sin(a*x + b*y)- 它具有周期性梯度)
标签: python arrays numpy gradient