Input
(1) 繰り返しを許すインデックスの配列
index = numpy.array([1, 2, 2])
(2) インデックス配列に対応する足したい値の配列
weight = numpy.array([1,2,3])
(3) 足される値の配列
value = numpy.zeros(5)
Output
(1) の回数だけ (2) を足す
Problem
value[index] += weight
--> 最後に indexに出て来る値だけが足される
value = [0, 1, 3, 0, 0]
でも、繰り返し文足してほしい
desire: value = [0, 1, 5, 0, 0]
Solution
value[list(set(index))] += [sum(weight[numpy.where(index == key)]) for key in set(index)]
でも
for x in zip(index, weight):
weight[x[0]] += x[1]
の方が計算量的にも断然はやい
0 件のコメント:
コメントを投稿