欢迎访问宙启技术站
智能推送

利用scipy.spatial库进行距离计算的示例

发布时间:2024-01-13 10:16:27

scipy.spatial库是Python科学计算库SciPy中的一个子模块,它提供了一系列用于空间数据结构和算法的函数和类。其中包括了距离计算的一些功能,如欧氏距离、曼哈顿距离、闵可夫斯基距离等。

示例1:计算欧氏距离

欧氏距离是最常用的距离度量方式,它表示两个点之间的直线距离。以下是使用scipy.spatial库计算欧氏距离的示例代码:

from scipy.spatial import distance

# 定义两个点的坐标
point1 = [1, 2, 3]
point2 = [4, 5, 6]

# 计算欧氏距离
euclidean_distance = distance.euclidean(point1, point2)

print("Euclidean distance:", euclidean_distance)

运行结果:

Euclidean distance: 5.196152422706632

示例2:计算曼哈顿距离

曼哈顿距离又称为城市街区距离,它表示两个点之间沿着正交轴(如水平和垂直方向)移动所需的最小距离。以下是使用scipy.spatial库计算曼哈顿距离的示例代码:

from scipy.spatial import distance

# 定义两个点的坐标
point1 = [1, 2, 3]
point2 = [4, 5, 6]

# 计算曼哈顿距离
manhattan_distance = distance.cityblock(point1, point2)

print("Manhattan distance:", manhattan_distance)

运行结果:

Manhattan distance: 9

示例3:计算闵可夫斯基距离

闵可夫斯基距离是一种通用的距离度量方式,它将欧氏距离和曼哈顿距离作为特殊情况。以下是使用scipy.spatial库计算闵可夫斯基距离的示例代码:

from scipy.spatial import distance

# 定义两个点的坐标
point1 = [1, 2, 3]
point2 = [4, 5, 6]

# 计算p=2的闵可夫斯基距离,即欧氏距离
minkowski_distance = distance.minkowski(point1, point2, p=2)

print("Minkowski distance (p=2):", minkowski_distance)

# 计算p=1的闵可夫斯基距离,即曼哈顿距离
minkowski_distance = distance.minkowski(point1, point2, p=1)

print("Minkowski distance (p=1):", minkowski_distance)

运行结果:

Minkowski distance (p=2): 5.196152422706632
Minkowski distance (p=1): 9

上述示例展示了使用scipy.spatial库中的距离计算函数来计算不同距离度量方式下的距离。根据具体的需求,可以选择使用合适的距离计算方式来衡量点之间的距离。