在numpy中是否有一种使用布尔数组跳过数组中某些元素的计算的方法?每当expensive * arr
中的对应元素为bool_arr
时,我都希望跳过对False
的求值。
results = bool_arr & (expensive * arr)
此代码不会短路并且and
运算符不适用,因为它不按元素求值,numpy中还有另一种优雅的解决方案吗?
答案 0 :(得分:1)
您可以使用bool_arr
来处理数组的子集,因为expensive
因此可以在一小部分值上运行,例如:
results = bool_arr
results[bool_arr] = expensive * arr[bool_arr]