Załóżmy masz tablicę wartości, które będą musiały być sumowaneSkumulowane podsumowanie z numpy tablicy przez indeks
d = [1,1,1,1,1]
a druga tablica określająca, które elementy powinny być sumowane
i = [0,0,1,2,2]
Wynik zostanie zapisany w nowej tablicy o rozmiarze max(i)+1
. Więc na przykład i=[0,0,0,0,0]
byłoby równoważne z sumowaniem wszystkich elementów d
i przechowywaniem wyniku na pozycji 0
nowej tablicy o rozmiarze 1
.
starałem się wdrożyć to używając
c = zeros(max(i)+1)
c[i] += d
Jednak operacja +=
dodaje każdy element tylko raz, dając w ten sposób nieoczekiwany wynik
[1,1,1]
zamiast
[2,1,2]
Jak poprawnie wprowadzić tego rodzaju sumowanie?
Byłoby to o wiele wyraźniejsze, jeśli wartości 'd' były unikalne. Na przykład, jeśli 'd = [0,1,2,3,4]' zgaduję dla 'i = [0,0,0,0,0]' chcesz 'c = [10]', podczas gdy dla 'i = [0,0,1,2,2]' chcesz 'c = [1,2,7]'? – mtrw
Zgadza się. Dzięki za wytłumaczenie. – dzhelil
W takim przypadku rozwiązanie juxstapose ze zmianą sugerowaną w komentarzach powinno załatwić sprawę. – mtrw