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

Numpy 如何使用布尔数组跳过数组中元素的昂贵计算?,numpy,numpy-ndarray,short-circuiting,Numpy,Numpy Ndarray,Short Circuiting,在numpy中有没有一种方法可以使用布尔数组跳过数组中某些元素的计算?每当bool\u arr中的相应元素为False时,我希望它跳过对昂贵*arr的评估 results = bool_arr & (expensive * arr) 此代码不会短路,和运算符不适合,因为它不进行元素计算,numpy中是否有其他优雅的解决方案?您可以使用bool\u arr处理数组的一个子集,因为昂贵因此可以在一小组值上运行,例如: results = bool_arr results[bool_ar

在numpy中有没有一种方法可以使用布尔数组跳过数组中某些元素的计算?每当
bool\u arr
中的相应元素为
False
时,我希望它跳过对
昂贵*arr
的评估

  results = bool_arr & (expensive * arr)

此代码不会短路,
运算符不适合,因为它不进行元素计算,numpy中是否有其他优雅的解决方案?

您可以使用
bool\u arr
处理数组的一个子集,因为
昂贵
因此可以在一小组值上运行,例如:

results = bool_arr
results[bool_arr] = expensive * arr[bool_arr]
results=bool\u arr

结果[bool_arr]=昂贵的*arr[bool_arr]
Some
ufunc
take
out
where
用于进行此类掩蔽的参数。我还没有看到相对速度优势。