Vor diesem Hintergrund (Beispiel) DatenVectorized sammeln Betrieb in numpy
target_slots = np.array([1, 3, 1, 0, 8, 5, 8, 1, 1, 2])
dummy_elements = np.arange(10*D).reshape(10, D)
ist es eine Möglichkeit, die Operation in einem vektorisierten numpy Ausdruck auszudrücken
gathered_results = np.zeros((num_slots, D))
for i, target in enumerate(target_slots):
gathered_results[target] += dummy_elements[i]
dieser Vorgang wie ein bincount
aussieht, aber statt Zählen wir summieren die Elemente eines anderen Arrays.
(Es wird angedeutet, dass np.max(target_slots)<num_slots
und np.min(target_slots)>=0
und target_slots.shape[0] == D
)
Warum ist 'D == len (target_slots) '? Geht dein Code nicht davon aus, dass 'len (target_slots) == 10'? – Eric
@Eric Ich glaube nicht, 'D' soll' len (target_slots) 'sein. Ich denke, es ist nur ein Parameter. Können wir diesen Schnitt auf das ursprüngliche OP zurücksetzen? – Divakar
Ich stimme @Divakar zu. 'target_slots' hat so viele Elemente wie die" Vektoren "in' dummy_elements' (jeweils Größe D). Man könnte sich diese Sammeloperation vorstellen, indem man die Vektoren in "dummy_elements" in die entsprechenden "target_slots" einfügt. Also 'len (target_slots) == dummy_elements.shape [0]' und 'D' ist ein Parameter – miltos