在 Lat\Lon 数组中查找最大斜率

Finding the maximum slope in an Lat\Lon array

我正在根据纬度绘制 20 个不同经度的海面高度。 结果是一个包含 20 条线的线图。我需要找到哪条线的坡度最陡,然后查明 lat lon.

到目前为止,我已经尝试使用 np.gradient 然后使用 max() 但我一直收到错误消息(ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()) 我觉得有更好的方法 it.Thanks 来帮助那些愿意提供帮助的人。 example of plot

slice3lat= lat[20:40] 
slice3lon= lon[20:40] 
slice3ssh=ssh[:,0,20:40,20:40]

plt.plot(slice3lat,slice3ssh)
plt.xlabel("Latitude")
plt.ylabel("SSH (m)")
plt.legend()

当您说 max() 时,我假设您指的是 Python 的内置 max 函数。这仅适用于 numpy 数组,当它们是一维/平面时,通过迭代元素,获得大小可比较的标量。如果您有一个像您的情况一样的二维数组,则该数组的顶级元素将成为其行,其中大小比较失败并显示您提供的消息。

在这种情况下,您应该在数组上使用np.max或直接调用arr.max()方法。

下面是一些使用np.gradient的示例代码,向量在每个方向上添加梯度并获得最大值及其在原始数据中的坐标位置:

grad_y, grad_x = np.gradient(ssh)
grad_total = np.sqrt(grad_y**2 + grad_x**2)  #  or just grad_y ?

max_grad = grad_total.max()
max_grad_pos = np.unravel_index(grad_total.argmax(), grad_total.shape)

print("Gradient max is {} at pos {}.".format(max_grad, max_grad_pos))

可能 ofc 仍然需要 fiddle 了解一下。