数组中的距离

问题描述 投票:-2回答:1

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

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] ]

有人可以帮忙解决这个问题吗?

python function distance
1个回答
0
投票

首先,您需要从数学库中导入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
© www.soinside.com 2019 - 2024. All rights reserved.