如何解决Numpy二维数组按双维度条件过滤时的布尔索引报错问题
错误原因
x[行筛选条件, 列筛选条件]语法中,逗号前后分别对应数组两个维度的筛选规则:
- 第一个参数
x[:, 0] <= -1.3是长度为100的布尔数组,匹配数组第0维(行维度,长度100)的筛选要求 - 第二个参数
x[:, 1] <= -0.9也是长度为100的布尔数组,但数组第1维(列维度)仅2个元素,长度不匹配触发索引错误。
正确代码
将两个行级筛选条件合并为一个布尔掩码,筛选同时满足两个条件的整行数据即可,注意&逻辑运算符优先级高于比较运算符,单个条件需要加括号:
# 写法1:拆分步骤便于调试 mask = (x[:, 0] <= -1.3) & (x[:, 1] <= -0.9) filtered_x = x[mask] # 写法2:一行简写 filtered_x = x[(x[:, 0] <= -1.3) & (x[:, 1] <= -0.9)]
结果验证
输出筛选后数组的形状可确认匹配需求:
print(filtered_x.shape) # 预期输出为 (4, 2),对应左下角4个符合要求的点
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

