Mam problem z nadaniem wartości logicznej maski, wymaga skutecznej operacji logicznej maską.
To wielowymiarowy maska, i używam einsum
dla osiągnięcia rezultatu, ale operacja nie jest bardzo wydajny, i zastanawiam się, czy mogę uzyskać jakąś pomoc w tym
Oto moja aktualna decyzja: (oba mask, truth_value, false_value
są fałszywymi danymi z typem dtype i formą, odpowiednimi moim problemie.
mask = np.random.randn(1000, 50)> 0.5
truth_value = np.random.randn(50, 10)
false_value = np.random.randn(10)
objective = np.einsum('ij,jk->ijk', mask, truth_value) + np.einsum('ij,k->ijk', ~mask, false_value)
Czy jest jakiś szybszy sposób, aby dostać się objective
prezent mask, truth_value, false_value
?
A ja czekałem, wymyślił szybszy sposób
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
Ale czy jest szybsza alternatywa ?
einsum
decyzja! trochę szybciej niż mójnp.where
+np.broadcast_to
rozwiązanie oparte.