Python 计算距离

  • Post category:Python

Python计算距离的方法有很多,下面我将介绍三种最常用的方法。

方法一:使用math库中的sqrt函数计算欧氏距离

欧氏距离是最常用的距离公式之一,在二维或三维空间中,欧氏距离的表达式为:

$d(x,y)=\sqrt{(x_1-y_1)^2+(x_2-y_2)^2+…+(x_n-y_n)^2}$

其中,$x=(x_1,x_2,…,x_n),y=(y_1,y_2,…,y_n)$是两个n维向量。Python中可以使用math库中的sqrt函数计算平方根,进而计算欧氏距离。

示例代码:

import math

def euclidean_distance(x, y):
    if len(x) != len(y):
        return None
    distance = 0
    for i in range(len(x)):
        distance += (x[i] - y[i]) ** 2
    distance = math.sqrt(distance)
    return distance

# 示例
print(euclidean_distance([1, 2, 3], [4, 5, 6]))

输出结果为:$5.196152422706632$

方法二:使用geopy库计算地理距离

geopy是一个Python库,用于确定地理坐标之间的距离。它支持不同的距离类型,如球面距离、大圆距离等。geopy可以帮助我们计算两个地点之间的距离。

示例代码:

from geopy import distance

# 示例
new_york = (40.7128, -74.0060)
los_angeles = (34.0522, -118.2437)
print(distance.distance(new_york, los_angeles).km)  # 输出结果为亚里士多德大圆距离,单位是公里

输出结果为:$3932.9249692730016$

方法三:使用scipy库中的spatial.distance计算各种距离

Scipy库是一个用于科学和工程计算的Python库,其中的spatial.distance可以帮助我们计算各种距离。它支持多种距离度量,如欧氏距离、cosine距离、曼哈顿距离等。

示例代码:

from scipy.spatial import distance

# 示例
x = [1, 2, 3]
y = [4, 5, 6]
print(distance.euclidean(x, y))  # 输出欧氏距离

输出结果为:$5.196152422706632$

以上就是Python计算距离的三种方法,您可以根据自己的需求选择不同的方法。