You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非迭代实现二维布尔Numpy数组按AND运算转一维数组

解决方案:二维布尔数组转一维AND结果数组

直接用以下两种单行非迭代方法即可实现需求:

方法1:使用np.all指定轴运算

inQuad = np.all(quadIndex, axis=1)
  • 原理:np.all会沿着指定的轴(这里axis=1表示每组x、y元素所在的维度)执行逻辑与运算,只有当每组的两个元素全为True时,对应位置的结果才为True,否则为False,直接输出形状为(1E5,)的一维布尔数组。

方法2:直接按列取元素做按位与

inQuad = quadIndex[:, 0] & quadIndex[:, 1]
  • 原理:布尔数组的按位与运算符&等价于逻辑与,直接提取数组的第一列(x布尔值)和第二列(y布尔值)做逐元素按位与,同样得到符合要求的一维数组。

示例验证

假设输入二维数组:

import numpy as np
quadIndex = np.array([[True, True], [False, True], [False, False]])

使用上述任意一种方法,输出结果均为:

array([ True, False, False])

错误尝试分析

你之前的代码np.any( ( quadIndex == np.bool_( [x, y] ) ) == [True, True] )之所以得到二维数组,是因为quadIndex == [True, True]是逐元素比较,会生成一个和原数组形状相同的二维布尔数组,后续的np.any若未指定轴,无法将每组结果聚合为单个值,自然得不到一维结果。而上述两种方法都是直接对每组的两个元素做聚合运算,完全符合需求。

内容的提问来源于stack exchange,提问作者Daltem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:07:38