Векторизация расчета расстояния Гаверсин вдоль пути, заданного списком координат

У меня есть список координат и я могу рассчитать матрицу расстояний между всеми точками, используярасстояние боярышника Метрика.

Координаты приходят какnumpy.array формы(n, 2) из(latitude, longitude) пары:

[[  16.34576887 -107.90942116]
 [  12.49474931 -107.76030036]
 [  27.79461514 -107.98607881]
 ...
 [  12.90258404 -107.96786569]
 [  -6.29109889 -107.88681145]
 [  -2.68531605 -107.72796034]]

Я также могу извлечь расстояние вдоль пути, подразумеваемого последовательностью координат, вот так:

coordinates = np.deg2rad(coordinates)
lat, lng = coordinates[:, 0], coordinates[:, 1]
diff_lat = lat[:, None] - lat
diff_lng = lng[:, None] - lng

d = np.sin(diff_lat / 2) ** 2 + np.cos(lat[:, None]) * np.cos(lat) * np.sin(diff_lng / 2) ** 2
dist_matrix = 2 * 6371 * np.arcsin(np.sqrt(d))
np.diagonal(dist_matrix, offset=1)

[   428.51472359   1701.42935402   1849.52714339  12707.47743385
  13723.9087041    4521.8250695    2134.258953      401.33113696
   4571.69119707     73.82631307   6078.48898641   9870.17140175
                               ...
   2109.57319898  12959.56540448  16680.64546196   3050.96912506
   3419.95053226   4209.71641445   9467.85523888   2805.65191129
   4120.18701177]

Я хотел бы только рассчитать вектор расстояния в отличие от всей матрицы, а затем выбрать соответствующую диагональ.

Ответы на вопрос(1)

Ваш ответ на вопрос