二维数组的 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 输出?
谢谢!
我不确定您为什么认为渐变应该不同。但是给定函数的梯度形状应该具有不同级别的相同形状。让我们分析一下:
所以你可以看到它们的形状相同。添加颜色级别,您会看到差异。
我有一个二维数组,它是一个正弦曲线图案,我想绘制该函数的 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 输出?
谢谢!
我不确定您为什么认为渐变应该不同。但是给定函数的梯度形状应该具有不同级别的相同形状。让我们分析一下:
所以你可以看到它们的形状相同。添加颜色级别,您会看到差异。