最好給出一個例子。基於另一個向量中的相似性的向量的條件平均值C++
假設向量A包括:
A = {3 ,2 ,1 ,4 ,6 ,3 ,8 ,4}
和向量B包括:在向量B
B = {1.5,2 ,2 ,1.5,3 ,3 ,3 ,2}
的唯一值是{1.5, 2, 3}
我想要得到的矢量結果成爲:
RESULT[0] = Average(A given B=1.5) = Average(3,4)
RESULT[1] = Average(A given B=2) = Average(2,1,4)
RESULT[2] = Average(A given B=3) = Average(6,3,8)
什麼是最有效的計算方法。我自己的方法是循環遍歷B中的唯一元素,併爲每個元素循環遍歷每個B值,嘗試匹配該唯一編號並在每個匹配中不斷總結向量A的相應元素,並計算匹配數量我可以找到平均值。
這太慢了。因爲我的向量A是8M元素,向量B由0.5M唯一值組成。
任何幫助,將不勝感激。
排序以鎖步兩種載體,然後遍歷B'的'相等範圍? –
這似乎很有希望,我現在會試試看看我能獲得多少速度提升。 – user1780424
雖然這是一種依賴於浮點值的確切平等的氣味。 – sehe