Как указано в руководстве, вам нужно «экспортировать» ваше расстояние/винценты в какой-то формат. Например. как это:
> from geopy.distance import vincenty
> newport_ri = (41.49008, -71.312796)
> cleveland_oh = (41.499498, -81.695391)
> print(vincenty(newport_ri, cleveland_oh).miles)
538.3904451566326
Вы не можете обработать vincenty
себя, потому что (как вы уже сказали) это объект вне геопии, который не поддерживает математические операнды. Вам нужно извлечь значения внутри объекта данных, например. с .miles
. Другие возможные значения см. в полной документации: документация GeoPy
Смотрите различия в типах:
> type(vincenty(newport_ri, cleveland_oh))
geopy.distance.vincenty
> type(vincenty(newport_ri, cleveland_oh).miles)
float
Теперь вы можете рассчитать это:
> vincenty(newport_ri, cleveland_oh).miles
538.3904451566326
> vincenty(newport_ri, cleveland_oh).miles * 2
1076.7808903132652
Или, если вам действительно нужен массив numpy из этого:
> np.array(vincenty(newport_ri, cleveland_oh).miles)
array(538.3904451566326)
> type(np.array(vincenty(newport_ri, cleveland_oh).miles))
numpy.ndarray
EDIT: обратите внимание, что вы даже можете принудительно применить его тип данных с помощью встроенного параметра NumPy dtype
:
> np.array(vincenty(newport_ri, cleveland_oh).miles, dtype=np.float32)
array(538.3904418945312, dtype=float32)
> np.array(vincenty(newport_ri, cleveland_oh).miles, dtype=np.float64)
array(538.3904451566326) # dtype=float64, default type here
> np.array(vincenty(newport_ri, cleveland_oh).miles, dtype=np.int32)
array(538, dtype=int32)
Это может быть полезным, если вы храните/загружаете много данных, но всегда нужна определенная точность.
person
daniel451
schedule
28.03.2016