我认为我的代码可以做得更好......
我想要的是:
array a = ([1,2,3],[4,5,6],[7,8,9])
array b = ([2,3,4],[2,2,2])
欧几里得距离 a[0] to b[0] and b[1]
,然后是最小值,依此类推,其他值......
结果应该是这样的
result = ([1,2])
我认为我这样做的方式有点复杂:
result = [0]*len(b)
for i in a:
c = 0
minimum = euclid(a[0],b[0])
place = 0
for j in b:
c=c+1
if (minimum > euclid(i,j)):
minimum = euclid(i,j)
place = c
result[place-1] = result[place-1]+1
好吧,我试着更好地解释它。我有两个数组 A 和 B 数组 A 有 3 个值(值 <=> [1,2,3])现在我想用 B 的所有值计算 A 的所有值的欧几里德距离并计算 B 的频率[0] 或 B[1] 是最小值。
所以我开始编写代码手册:起初我用 b[0] 计算 a[0] 并发现那是最小值,因为目前没有最小值。接下来我用 b[1] 计算 a[0] 并发现 euclidean(a[0],b[1]) < euchlidean(a[0],b[0]) 所以我将数组设置为从 c([0,0]) 到 c([0,1]) 的时刻。接下来我计算 a[1] 到 b[0] 和 b[1] 的欧几里德距离,发现 b[0] 是这两个值中的最小值,所以我将 c 设置为 c([1,1]).. .