1. 程式人生 > >numpy計算路線距離

numpy計算路線距離

numpy計算路線距離

覺得有用的話,歡迎一起討論相互學習~Follow Me

參考文獻
enumerate遍歷陣列
np.diff函式
numpy適用陣列作為索引

標記路線上的點

\[X={X1,X2,X3,X4,X5,X6}\]
\[Xn=(x_n,y_n)\]

import numpy as np
# 適用二維陣列表示地圖上的六個點
# city_position.shape=(6,2) 表示旅行商經過的路線
city_position=np.array([[1,18],[6,23],[8,64],[7,49],[49,48],[12,36]])

儲存路線上的點

point_x=np.ones((6,1))
point_y=np.ones((6,1))
point_x=city_position[:,0] # 存放路線的橫座標
point_y=city_position[:,1] # 存放路線的縱座標
# print(point_x)
# print(point_y)
# [ 1  6  8  7 49 12]
# [18 23 64 49 48 36]

依次計算路線上點之間的距離

\[total_distance=\sum_{n=2}^{n}\sqrt{(x_n-x_{n-1})^2+(y_n-y_{n-1})^2}\]

# 計算路線的距離
total_distance=np.sum(np.sqrt(np.square(np.diff(point_x)) + np.square(np.diff(point_y))))
print("total_distance",total_distance)
print("np.diff(point_x)",np.diff(point_x))
print("np.diff(point_y)",np.diff(point_y))
# total_distance 144.062319447
# np.diff(point_x) [  5   2  -1  42 -37]
# np.diff(point_y) [  5  41 -15  -1 -12]

\[\sqrt{(5^2+5^2)}+\sqrt{(2^2+41^2)}+\sqrt{((-1)^2+(-15)^2)}+\sqrt{(42^2+(-1)^2)}+\sqrt{((-37)^2+(-12)^2)}\]