Python|计算街区距离
城市街区距离通常在配对对象的 2 坐标之间计算。它是 2 坐标之间绝对差的总和。 2 点a和b的k维城市街区距离使用以下公式进行数学计算:
在本文中,针对这个问题解释了两种解决方案——一种使用Python代码,另一种使用预定义的方法。
例子:
Input:
array1 = [1, 2, 13, 5]
array2 = [1, 27, 3, 4]
Output:
The CityBlock distance between 2 array is: 36
Input:
a = [34, 44, 89, 81, 67, 49, 33, 59]
b = [98, 34, 23, 12, 233, 23, 44]
Output:
The CityBlock distance between 2 array is: 412
代码:使用上述公式计算距离的Python临时代码。
import numpy as np
def cityblock_distance(A, B):
result = np.sum([abs(a - b) for (a, b) in zip(A, B)])
return result
if __name__== "__main__":
array1 = [1, 2, 13, 5]
array2 = [1, 27, 3, 4]
result = cityblock_distance(array1, array2)
print("The CityBlock distance between 2 arrays is:", result)
输出:
The CityBlock distance between 2 arrays is: 36
相同大小的数组没有限制。因此,使用上面的公式很容易计算 2 坐标之间的城市街区距离,但我们可以使用预定义的方法来计算具有 2 维或更多维的数组。
代码: Python代码使用预定义的方法,使用上面的公式计算距离。
# Import necessary package
import scipy.spatial.distance as d
def CityBlock_distance(A, B):
result = d.cdist(A, B, 'cityblock')
return result
if __name__== "__main__":
mat1 = [[1, 2, 13, 5], [2, 3, 4, 5]]
mat2 = [[1, 27, 3, 4], [8, 6, 9, 3]]
result = CityBlock_distance(mat1, mat2)
print(result)
输出:
[[ 36. 17.]
[ 27. 16.]]