2013-07-17 113 views
1

我想我的代碼可以做的更好計數......優化陣列

我想要什麼:

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的所有數值和B的所有數值的歐式距離,並計算B [0]或B [1]是最小值。

所以我開始代碼手冊: 起初,我用b [0]計算一個[0],發現這是最小值,因爲此刻沒有最小值。在接下來我計算一個[0]與b [1],並發現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])。

+0

請寫出更好的標題你的問題,「或別的東西」,然後一個笑臉不會成爲一個好標題。 –

+2

_「等與其他值」_「。這是否意味着你也想要從'a [1]到b [0]和b [1]'的歐式距離,以及從'a [2]到b [0]和b [1]'的歐幾里德距離,以及因此無論「a」有多少元素?如果是這樣,爲什麼'result'只有兩個元素? – Kevin

+0

我想計算從[0]到b [0],b [1]的歐式距離並計算最小值。例如1.如果最小值= b [0] - > c [1,0],則舍入a [0] - b [0],b [1],c [0,0] 0],b [1],c [1,0]如果最小值= b [1] - > c [1,1] 3.round a [2] - b [0],b [1],c [1 ,1] if minimum = b [2] - > c [1,2] – Linda

回答

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 
+0

你明白了!謝謝 – Linda