Мне нужно вычислить угол между двумя точками, скажем, A (x1, y1) и B (x2, y2). И текущий код, который я использую, выглядит следующим образом:
import math
direction = math.degrees(math.atan((y2 - y1) / (x2 - x1)))
Я попытался выполнить тот же код, используя следующий код:
x = np.asarray(data['x'])
y = np.asarray(data['y'])
direction = np.rad2deg(np.arctan2(y, x))
Здесь 'x' и 'y 'относятся к двум атрибутам, имеющим координаты.
Однако значения, которые я получаю для вычисления направления с использованием numpy, отличаются от вычислений, полученных с использованием пакета' math '.
Просто для предоставленияминимальное и максимальное значения-
data['x'].min(), data['x'].max()
# (25.24, 803.85)
data['y'].min(), data['y'].max()
# (21.44, 805.76)
Два распределения для 'x' и 'y' имеют почти нормальное распределение.
Как реализовать вычисление углов с использованием numpy?
Спасибо!
Пример данных-
data_d =
{'time': [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
'x': [405.31,
405.3,
405.29,
405.27,
405.27,
405.27,
405.31,
405.38,
405.46,
405.54,
405.63],
'y': [417.07,
416.86,
416.71,
416.61,
416.54,
416.49,
416.37,
416.27,
416.13,
415.93,
415.84],
'direction': [87.27368900609596,
86.18592516571398,
78.69006752595475,
0.0,
0.0,
-71.56505117706985,
-55.007979801450084,
-60.25511870306028,
-68.19859051363696,
-45.00000000001809,
-67.38013505194608],
'direction_np_computation': [-134.1807285626706,
-134.19444442862144,
-134.2040441491018,
-134.2095039258752,
-134.21431600901414,
-134.2177537199761,
-134.2288323248442,
-134.24065659640502,
-134.2559407971113,
-134.27535831135458,
-134.2879109537407]}
data = pd.DataFrame(data_d)
Здесь столбец 'direction' вычисляется с помощью пакета 'math', а 'direction_np_computation' - с помощью кода-
# Reference point- Xr = 0 Yr = 0
# Get 'x' and 'y' attributes from 'data'- x = np.array(data['x']) y = np.array(data['y'])
# Compute direction from reference point with the coordinates- direction = np.rad2deg(np.arctan2(Yr - y, Xr - x))
Почему существует несоответствие между столбцами?