计算两个角度之间的角度差

2024-04-26 10:58:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以度(0-360)表示方向的数据帧,我想得到一个主方向的向量化差(以度(0-180)表示)

main_direction: 340

^{tb1}$

现在我想得到数据帧中每个值的主方向(340)和方向之间的绝对差值,因此我的结果如下所示:

^{tb2}$

它应该能够通过以下方式解决此问题:

df['Difference'] = df['Degrees']-main_direction) %360

df['Difference'] = np.where(main_direction-df['Degrees'] < 0, df['Degrees']-main_direction + 360, abs(df['Degrees']-main_direction))

但这两个都没有给我正确的结果


Tags: 数据dfmainnp方式abs方向where
1条回答
网友
1楼 · 发布于 2024-04-26 10:58:02
def diff(angle):
  res = (angle-main_direction)%360
  if res < 180:
    return res
  else:
    return (360-res)

也可以使用lambda函数

diff = lambda x: (x-main_direction)%360 if (x-main_direction)%360<180 else 360-(x-main_direction)%360
# Example
main_direction = 320
angles = [10,40,0,320,80]
for angle in angles:
  print(diff(angle))

相关问题 更多 >