Verimli boole maskesi işlemi gerektiren bir boole maskesi değeri atama sorunum var.
Bu çok boyutlu bir maske ve kullanıyorum einsum
sonuca ulaşmak için, ancak işlem çok verimli değil ve bununla ilgili biraz yardım alabilir miyim diye merak ediyorum
İşte şu anki çözümüm: (her ikisi de mask, truth_value, false_value
dtype ve shape ile kukla veriler sorunumla eşleşiyor.
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)
Almak için daha hızlı bir yol var mı objective
verilmiş mask, truth_value, false_value
?
Beklerken daha hızlı bir yol buldum.
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
Ama daha hızlı bir alternatif var mı ?
einsum
çözüm! benimkinden biraz daha hızlınp.where
+np.broadcast_to
tabanlı çözüm.