如何在Python中计算距离?[简单的步骤指南]

565 阅读2分钟

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

  1. 汉明距离
  2. 欧几里得距离
  3. 曼哈顿距离

我们将查看每个距离计算的公式,然后学习如何在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中计算曼哈顿距离

两个向量/数组(例如AB)之间的曼哈顿距离计算为Σ|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


结论

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

学习愉快!😇