Tengo un booleano valor de la máscara de la asignación de problema requiere el uso eficiente booleano máscara de operación.
Es un multi-dimensión de la máscara y la estoy usando einsum
para conseguir el resultado, pero la operación no es muy eficiente, y yo me pregunto, si puedo conseguir un poco de ayuda con esto
Aquí está mi solución actual: (ambos mask, truth_value, false_value
son datos ficticios con dtype y la forma de las coincidencias con mi problema.
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)
¿Hay alguna manera más rápida de llegar objective
dado mask, truth_value, false_value
?
Mientras estaba esperando, descubrió una manera más rápida
objective = np.where(mask[...,np.newaxis], np.broadcast_to(truth_value, (1000, 50, 10)), np.broadcast_to(false_value, (1000, 50, 10)))
Pero, ¿hay alguna alternativa más rápida ?
einsum
la solución! un poco más rápido de lo que minp.where
+np.broadcast_to
basado en la solución.