如何用Python计算距离?[ 简单的分步指南 ]

嘿!今天我们将学习如何用Python编程语言计算距离。在本教程中,我们将计算以下距离:

  1. 汉明距离
  2. 欧氏距离
  3. 曼哈顿距离

我们将查看每个距离计算的公式,然后学习如何借助 Python 代码进行计算。

另请阅读:在 Python 中计算 a^n:在 Python 中计算幂的不同方法


在Python中计算汉明距离

汉明距离是在两个数字之间计算的,但采用二进制格式。它基本上意味着二进制格式中两个数字之间不同的位数。

例如,如果我们选择二进制数 101 和 111,则它们之间的汉明距离为 1,因为它们仅相差一位二进制数。

在 Python 中实现汉明距离

现在,为了计算不同的位数,我们将使用 XOR 运算。如果位不同,XOR 只会导致 1,否则结果为 0。最后,我们将计算两个数字的 XOR 中设置的位数。

1
2
3
4
5
6
7
8
9
10
11
12
13
a = int(input())
b = int(input())
 
x = a^b
final_ans = 0;
 
while (x > 0):
    final_ans += x & 1;
    x >>= 1;
 
print("First Number: ",a)
print("Second Number: ",b)
print("Hamming Distance: ",final_ans)

我们输入 12 和 9 作为两个输入,汉明距离为 3,如下面的输出所示。

First Number:  9
Second Number:  14
Hamming Distance:  3

在Python中计算欧几里德距离

欧几里得距离是空间中两点之间的距离,可以借助毕达哥拉斯公式进行测量。公式如下所示:

将点视为 (x,y,z) 和 (a,b,c),然后距离计算如下:
[ (xa)^2 + (yb)^2 + (zc)^2 ] 的平方根。

实施

为了计算两个坐标点之间的欧几里德距离,我们将使用python 中的numpy模块。

1
2
3
4
5
import numpy as np
p1 = np.array((1,2,3))
p2 = np.array((3,2,1))
sq = np.sum(np.square(p1 - p2))
print(np.sqrt(sq))

上述代码的输出为 2.8284271247461903。您还可以使用计算器手动计算距离,结果大致相同。

另请阅读:计算未加权图中节点之间的距离


用Python计算曼哈顿距离

两个向量/数组(例如A 和 B)之间的曼哈顿距离计算为 Σ|A i  – B i | 其中 A i是第一个数组中的第 i 个元素,B i 是第二个数组中的第 i 个元素。

代码实现

1
2
3
4
5
6
7
8
9
10
11
A = [1,2,3]
B = [5,3,2]
 
dis = 0
 
for i in range(len(A)):
    dis += abs(A[i] - B[i])
 
print("First Array is: ", A)
print("Second Array is: ", B)
print("Manhattan Distance is: ", dis)

上述代码的输出如下所示。

First Array is:  [1, 2, 3]
Second Array is:  [5, 3, 2]
Manhattan Distance is6

结论

我希望您理解本教程中提到的所有距离计算的概念和代码逻辑。感谢您阅读本教程!

快乐学习!😇