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

时间:2019-08-21 18:10:36

标签: numpy numpy-ndarray short-circuiting

在numpy中是否有一种使用布尔数组跳过数组中某些元素的计算的方法?每当expensive * arr中的对应元素为bool_arr时,我都希望跳过对False的求值。

  results = bool_arr & (expensive * arr)

此代码不会短路并且and运算符不适用,因为它不按元素求值,numpy中还有另一种优雅的解决方案吗?

1 个答案:

答案 0 :(得分:1)

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

results = bool_arr
results[bool_arr] = expensive * arr[bool_arr]