计算python中两个风向的差异

时间:2016-11-29 03:08:34

标签: python numpy math

如何在python中计算两个风向(以度为单位)的差值(WD_Bias),以便结果范围从-180到180?这是我到目前为止的代码?这似乎是我想要的,还是我错过了其他的东西?

WD_Bias = WD_model - WD_obs

WD_Bias[WD_Bias>180.]=360.-WD_Bias[WD_Bias>180.]
WD_Bias[WD_Bias<-180.]=WD_Bias[WD_Bias<-180.]+360.

2 个答案:

答案 0 :(得分:2)

如果您减去的风向大小相同,请取差值并使用模运算来得到-180和+180之间的答案。

如果它们的大小不同,则将它们表示为矢量(实数+图像工作),然后使用反正切来找到矢量差异角度。或者使用np.angle。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.angle.html

答案 1 :(得分:0)

如果你想要从 0 到 180 的错误,你可以使用以下函数:

import numpy as np

def wdir_diff(wd1,wd2):
    diff1 = (wd1 - wd2)% 360
    diff2 = (wd2 - wd1)% 360
    res = np.minimum([diff1,diff2])
    return res

以下几行应该确保函数产生预期的行为:

import numpy as np
import matplotlib.pyplot as plt

w1 = np.arange(0,360,5)
w2 = np.arange(0,360,5)
X,Y = np.meshgrid(w1,w2)
Z = wdir_diff(X,Y)

fig, ax = plt.subplots()
ax.set_aspect("equal")
im= ax.pcolormesh(X,Y,Z, cmap="jet")
fig.colorbar(im)
plt.show()