나는 부울 마스크 값을 할당하여 문제가 필요 효율적인 부울 마스크 작업입니다.
그것은 다중 차원스크 사용하고 있는데 einsum
결과를 달성하기 위해,하지만 작업은 매우 효율적이고,내가 궁금해 얻을 수 있다면,그것으로 도움이
여기에는 현재 해결책:(모두 mask, truth_value, false_value
은 거짓과 데이터를 dtype 및 모양과 일치하는 내 문제입니다.
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)
이 있을 얻을 수있는 빠른 방법 objective
어 mask, truth_value, false_value
?
는 동안 기다리고 있었,생각하는 빠른 방법
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
그러나 어떤 대?
einsum
솔루션! 는 것보다 더 나np.where
+np.broadcast_to
기반 솔루션입니다.