优化数组中的计数

时间:2013-07-17 12:42:01

标签: python arrays max counting minimum

我认为我的代码可以做得更好......

我想要的是什么:

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])现在我想用A的所有值计算A的所有值的欧氏距离并计算如何通常B [0]或B [1]是最小的。

所以我启动代码手册: 首先,我用b [0]计算[0]并发现这是最小值,因为此刻没有最小值。接下来,我用b [1]计算[0]并发现欧几里得(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]).. 。

1 个答案:

答案 0 :(得分:1)

我相信你所说的是你有两个积分清单 - a& b。对于a中的每个点,为b中最接近(最小欧氏距离)的任何一点递增一个计数器。这是对的吗?

以下是我将如何实现这一目标:

results = [0] * len(b)
for p_a in a:
    dists = [euclid(p_a, p_b) for p_b in b]
    min_index = dists.index(min(dists))
    results[min_index] += 1