嘿!今天我们将学习如何用Python编程语言计算距离。在本教程中,我们将计算以下距离:
- 汉明距离
- 欧氏距离
- 曼哈顿距离
我们将查看每个距离计算的公式,然后学习如何借助 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 is : 6 |
结论
我希望您理解本教程中提到的所有距离计算的概念和代码逻辑。感谢您阅读本教程!
快乐学习!😇