查找纬度\隆数组中的最大斜率



我正在按纬度绘制 20 个不同经度的海面高度。 结果是一个包含 20 条线的线图。我需要找到哪条线的坡度最大,然后确定该latlon

到目前为止,我已经尝试使用 np.gradient 和 max((,但我不断收到错误(ValueError:具有多个元素的数组的真值是不明确的。使用 a.any(( 或 a.all((( 我有一种感觉,有一种更好的方法可以做到这一点。感谢那些愿意提供帮助的人。 绘图示例

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数组,当它们是一维/平面的,通过迭代元素,可以获得大小相当的标量。如果您有一个 2D 数组,就像您的情况一样,数组的顶级元素将成为它的行,其中大小比较失败并显示您提供的消息。

在这种情况下,应在数组上使用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 仍然需要摆弄它。

最新更新