Mám boolean hodnotu masky priradenie problém si vyžaduje účinné boolean maska prevádzky.
Je to multi-rozmer masku a som pomocou einsum
ak chcete dosiahnuť výsledok, ale prevádzka nie je veľmi efektívna, a ja som premýšľal, či môžem dostať nejakú pomoc s ním
Tu je môj súčasný riešenie: (oboch mask, truth_value, false_value
sú fiktívne údaje s dtype a tvar zápasy na môj problém.
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)
Je nejaký rýchlejší spôsob, ako získať objective
uvedené mask, truth_value, false_value
?
Kým som čakal, prišiel na rýchlejší spôsob
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
Ale je tam nejaké rýchlejšie alternatíva ?
einsum
riešenie! trochu rýchlejší ako môjnp.where
+np.broadcast_to
based riešenie.