1. 欧氏距离
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空
间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中
的欧氏距离就是两点之间的实际距离。
from scipy.spatial import distance
a = (1, 2, 3)
b = (4, 5, 6)
print(distance.euclidean(a, b))
2. 曼哈顿距离
图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的
曼哈顿距离。曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-
xj|+|yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离
正是在南北方向上旅行的距离加上在东西方向上旅行的距离,因此,曼哈顿距离又称为出租车距
离。曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。曼哈顿距示意图在早期
的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,原因是浮点运算很昂
贵,很慢而且有误差,如果直接使用AB的欧氏距离(欧几里德距离:在二维和三维空间中的欧氏
距离的就是两点之间的距离),则必须要进行浮点运算,如果使用AC和CB,则只要计算加减法即
可,这就大大提高了运算速度,而且不管累计运算多少次,都不会有误差。
import numpy as np
from scipy.spatial import distance
A = np.array([7,8,9])
B = np.array([4,5,6])
# 方式一:直接构造公式计算
dist1 = np.sum(np.abs(A-B))
# 方式二:内置线性代数函数计算
dist2 = np.linalg.norm(A-B,ord=1) #ord为范数类型,取值1(一范数),2(二范数),np.inf(无穷范数)