嗨,你们好!今天我们将学习如何用Python编程语言计算距离。在本教程中,我们将计算以下距离:
- 汉明距离
- 欧几里得距离
- 曼哈顿距离
我们将查看每个距离计算的公式,然后学习如何在Python代码的帮助下进行计算。
在Python中计算汉明距离
汉明距离是在两个数字之间计算的,但以二进制格式计算。它基本上意味着两个数字之间在二进制格式下的位数差异。
例如,如果我们选择二进制数字101和111,那么它们之间的汉明距离是1,因为它们只差一个二进制数字。
在Python中实现汉明距离
现在,为了计算相差的位数,我们将使用XOR操作。XOR只有在位数不同的情况下才会产生1,否则就会产生0。
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),那么距离计算为:
[ (x-a)^2 + (y-b)^2 + (z-c)^2]的平方根。
实施
为了计算两个坐标点之间的欧几里得距离,我们将使用python中的numpy模块。
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)之间的曼哈顿距离计算为Σ|Ai -Bi|其中Ai是第一个数组中的第i个元素,Bi是第二个数组中的第i个元素。
代码实现
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
结论
我希望你能理解本教程中提到的所有距离计算的概念和代码逻辑。感谢你阅读本教程!
学习愉快!😇