如何在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.
答案 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()