Измерить расстояние до ближайшего такси
Мне нужно написать код в котором я смогу найти ближайшее такси до заданного адреса. Я делал похожую задачу, но там нужно было определить расстояния между деревнями. Там я создавал список списков и делал новую таблицу, где всё расписано. Но сейчас у меня почему-то не получается.
avenues_df = pd.DataFrame([0, 153, 307, 524], index=['Park', 'Lexington', '3rd', '2nd'])
streets_df = pd.DataFrame([0, 81, 159, 240, 324], index=['76', '75', '74', '73', '72'])
address = ['Lexington', '74']
taxies = [
['Park', '72'],
['2nd', '75'],
['3rd', '76'],
]
address_vector = np.array([avenues_df.loc[address[0]], streets_df.loc[address[1]]])
taxi_distances = []
index =
print(taxies[index])
taxies - места стоянки машин
address - адрес по которому они должны приехать
avenues_df, streets_df - координаты улиц и авеню.
А вот подобная задача про деревни, мне кажется, что с такси должна решаться подобным способом, но я не могу догнать как.
distances = []
for village_from in range(len(village)):
row = []
for village_to in range(len(village)):
value = distance.euclidean(vectors[village_from], vectors[village_to])
row.append(value)
distances.append(row)
distances_df = pd.DataFrame(distances, index=village, columns=village)
Ответы (1 шт):
Задача учебная? Тогда должно быть сказано использовать-ли эвклидово расстояние или манхеттенское расстояние. Во втором случае надо использовать метод cityblock из пакета scipy.spatial.distance.
from scipy.spatial.distance import cityblock
dist=[]
address_vector = np.array([avenues_df.loc[address[0]], streets_df.loc[address[1]]])
for car in taxies:
taxies_vector=np.array([avenues_df.loc[car[0]], streets_df.loc[car[1]]])
dist.append(cityblock(address_vector,taxies_vector))
ind=dist.index(min(dist))
print ('Ближайшее такси расположено по адресу авенью ', taxies[ind][0], ',улица ',taxies[ind][1])
print ('Расстояние доезда - ',min(dist))
Результат:
Ближайшее такси расположено по адресу авенью 3rd ,улица 76
Расстояние доезда - 313