mam tych zmiennych o następujących wymiarach:Najszybszy sposób używania Numpy - podsumowuje i produkty wielowymiarowe
A - (3,)
B - (4,)
X_r - (3,K,N,nS)
X_u - (4,K,N,nS)
k - (K,)
i chcę obliczyć (A.dot(X_r[:,:,n,s])*B.dot(X_u[:,:,n,s])).dot(k)
dla każdej możliwej n
i s
, sposób w jaki to robię teraz jest następujący:
np.array([[(A.dot(X_r[:,:,n,s])*B.dot(X_u[:,:,n,s])).dot(k) for n in xrange(N)] for s in xrange(nS)]) #nSxN
ale to jest bardzo powolny i zastanawiałem się, czy istnieje lepszy sposób to zrobić, ale nie jestem pewien.
Jednakże istnieje inny obliczenie, czy robię i jestem pewien, że to może być zoptymalizowane:
np.sum(np.array([(X_r[:,:,n,s]*B.dot(X_u[:,:,n,s])).dot(k) for n in xrange(N)]),axis=0)
W tym jednym Tworzę numpy
tablicę tylko podsumować je w jednej osi i wyrzucić tablicę po . Gdyby to była lista w 1-D, użyłbym reduce
i zoptymalizowałbym to, co powinienem użyć dla tablic numpy
?
@ JoãoAbrantes jakie jest p5 w edycjach? Czy powinien to być p1? – Divakar
tak powinno być p1! –
@ JoãoAbrantes Doceń zmiany! – Divakar