如何高效对大型二维布尔数组横向执行np.logical_and操作?
高效对二维布尔数组执行横向AND操作的方法
直接使用numpy的np.all()函数,通过指定axis=1参数实现横向(每行)的AND聚合,这是最适合大数组的高效方案:
import numpy as np k = np.array([[True, True, False], [True, False, False], [True, True, True]]) # 对每行执行AND操作,得到预期结果 result = np.all(k, axis=1) print(result) # 输出: array([False, False, True])
为什么这个方法高效?
numpy的内置聚合函数(比如np.all)是基于C语言实现的向量化操作,完全绕开了Python层面的循环开销。对于你提到的大尺寸数组,这种方法的执行速度会比Python for循环快几个数量级,能彻底解决循环耗时过长的问题。
补充说明
- 如果需要对每列执行AND操作,只需将
axis参数改为0:column_wise_result = np.all(k, axis=0) print(column_wise_result) # 输出: array([ True, False, False]) np.all()对布尔数组的逻辑与运算做了专门优化,比手动调用np.logical_and再循环的方式更简洁高效。
内容的提问来源于stack exchange,提问作者Crear
相关产品推荐
相关产品推荐

