Mam dwa numpy tablice, jeden zawierający wartości i jeden zawierający każdą kategorię wartości.NumPy suma jednej tablicy na podstawie wartości w innej tablicy dla każdego pasującego elementu w trzeciej tablicy
values=np.array([1,2,3,4,5,6,7,8,9,10])
valcats=np.array([101,301,201,201,102,302,302,202,102,301])
Mam inną tablicę zawierającą unikalne kategorie, które chciałbym podsumować.
categories=np.array([101,102,201,202,301,302])
Mój problem polega na tym, że będę przeprowadzał ten sam proces sumowania kilka miliardów razy i każda mikrosekunda ma znaczenie.
Moje obecne wdrożenie jest następujące.
catsums=[]
for x in categories:
catsums.append(np.sum(values[np.where(valcats==x)]))
Powstałe catsums powinno być:
[1, 14, 7, 8, 12, 13]
Mój obecny czas pracy wynosi około 5 ms. W Pythonie wciąż jestem trochę nowy i miałem nadzieję znaleźć szybkie rozwiązanie, potencjalnie łącząc dwie pierwsze tablice lub lamdbę lub coś fajnego, o czym nawet nie wiem.
Dzięki za przeczytanie!
Jaki jest Twój oczekiwany wynik, biorąc pod uwagę przykład dałeś? – piRSquared
Dodano do tekstu, dzięki za wskazanie tego niedopatrzenia! – hrschbck
przegłosował twoje pytanie, masz teraz 15 przedstawicieli, nie wahaj się upvote i zaakceptuj @piRSquared odpowiedź – Wen