如何使用布尔数组跳过数组中元素的昂贵计算?

How to use a boolean array to skip expensive calculations of elements in array?

在numpy中有没有办法使用布尔数组来跳过对数组中某些元素的计算?只要 bool_arr 中的相应元素是 False.

,我希望它跳过 expensive * arr 的评估
  results = bool_arr & (expensive * arr)

此代码不会短路,并且 and 运算符不适合,因为它不会按元素求值,numpy 中是否有其他优雅的解决方案?

您可以使用 bool_arr 处理数组的子集,因为 expensive 因此可以 运行 处理一小组值,例如:

results = bool_arr
results<b>[bool_arr]</b> = expensive * arr<b>[bool_arr]</b>