数组中的距离

Distance in arrays

所以我必须编写一个函数来计算两个点之间的距离 - p1 和 p2 - 来自具有多个点的数组。每个点代表一个边长为 20 m 的正方形。 距离应该是这样的:

d = sqrt(w(r1 −r2))^2 + (w(c1 −c2))^2 + (a1 −a2)^2 )

其中 w 为 20,正方形的边,r1 和 r2,行的索引,c1 和 c2 列的索引,a1 和 a2 是每个点的值。

距离数组是:

test = [ [206,205,204,190,208], [190,194,206,197,203], [196,196,205,201,193], [194,199,199,206,205], [192,196,195,201,193], [194,199,200,200,205], [196,196,195,200,193] ]

有人可以帮助解决这个简单的问题吗?

首先你需要从数学库中导入sqrt 可以通过将值乘以自身 (r2-r1)(r2-r1) 或使用数学库中的 pow 来计算平方。 (r2-r1)^2 不起作用。

严格来说A不是数组而是列表(列)的列表(行)。 但是无论如何您都可以将其视为一种数组。您可以使用两个索引 A[row_index][column_index]

来获取它的值
from math import sqrt, pow

A = [[206,205,204,190,208],
     [190,194,206,197,203],
     [196,196,205,201,193],
     [194,199,199,206,205],
     [192,196,195,201,193],
     [194,199,200,200,205],
     [196,196,195,200,193]]

W = 20


def distance(r1, c1, r2, c2):
    # get a values for point 1 and 2
    a1 = A[r1][c1]
    a2 = A[r2][c2]
    # calculate the distance
    d = sqrt(pow(W*(r2-r1), 2) + pow(W*(c2-c1), 2) + pow(a2-a1, 2))
    return d


print(distance(0,0,4,4))
>>> 113.88