рассчитать угол в кадре панды - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть следующее pandas.DataFrame:

       City x-Coord  City y-Coord                     coord
12860    59333.3333    18050.0000       (59333.3333+18050j)   
12941    59350.0000    18050.0000            (59350+18050j)   
13035    59366.6667    18050.0000       (59366.6667+18050j)   
12940    59350.0000    18033.3333       (59350+18033.3333j)   
13034    59366.6667    18016.6667  (59366.6667+18016.6667j)   
13033    59366.6667    18000.0000       (59366.6667+18000j)   
13132    59383.3333    18000.0000       (59383.3333+18000j)   
13133    59383.3333    18016.6667  (59383.3333+18016.6667j)   
13134    59383.3333    18033.3333  (59383.3333+18033.3333j)   
13230    59400.0000    18033.3333       (59400+18033.3333j)

Теперь, чтобы вычислить угол между городом 1 (x), 2 (y) и 3 (z):

arccos(np.dot((x-y),(z-y))/(abs(x-y)*abs(z-y))

Итак, я вычислил следующее:

df['combined'] = list(zip(df['City x-Coord'], df['City y-Coord']))
df['combined'] = df['combined'].apply(np.array)
a = df['combined'] - df['combined'].shift(1)
b = df['combined'] - df['combined'].shift(-1)
df['angle'] = [np.degrees(np.arccos(np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y)))).round().astype(int) for
               x, y in zip(a, b)]

Но я не получаю правильные углы.

df.head()   

Out [5]:

       City x-Coord  City y-Coord                     coord  \
12860    59333.3333    18050.0000       (59333.3333+18050j)   
12941    59350.0000    18050.0000            (59350+18050j)   
13035    59366.6667    18050.0000       (59366.6667+18050j)   
12940    59350.0000    18033.3333       (59350+18033.3333j)   
13034    59366.6667    18016.6667  (59366.6667+18016.6667j)   
                       combined       angle  
12860     [59333.3333, 18050.0] -2147483648  
12941        [59350.0, 18050.0]         180  
13035     [59366.6667, 18050.0]          45  
12940     [59350.0, 18033.3333]          90  
13034  [59366.6667, 18016.6667]         135

Кроме того, последнее значение также неверно из-за значения NaN.

df.tail()   

Out [6]:

       City x-Coord  City y-Coord                     coord  \
12677    59300.0000    18100.0000            (59300+18100j)   
12761    59316.6667    18083.3333  (59316.6667+18083.3333j)   
12863    59333.3333    18100.0000       (59333.3333+18100j)   
12862    59333.3333    18083.3333  (59333.3333+18083.3333j)   
12861    59333.3333    18066.6667  (59333.3333+18066.6667j)   
                       combined       angle  
12677        [59300.0, 18100.0]         135  
12761  [59316.6667, 18083.3333]          90  
12863     [59333.3333, 18100.0]          45  
12862  [59333.3333, 18083.3333]         180  
12861  [59333.3333, 18066.6667] -2147483648  

1-я и последняя запись, которую я могу понять, как значение Nan.Могу ли я изменить понимание слова, чтобы исправить это?Кроме того, мой расчет верен?Точно сказать не могу.Может кто-нибудь, пожалуйста, дайте второе мнение.

Спасибо, Арнаб

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...