我有一个布尔掩值的分配问题的要求有效布尔掩操作。
它是一个多层面罩和我用的 einsum
实现结果,但是操作不是很有效率,我想知道,如果我可以得到一些帮助
这是我目前的解决方案:(两个 mask, truth_value, false_value
是虚拟数据有d型和形状匹配我的问题。
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
基于解决方案。