如何使用numpy的where方法仅对矩阵单列应用条件获取对应行索引
numpy矩阵单列筛选获取行索引实现
核心实现逻辑
你之前出错的原因是直接将整个矩阵传入条件判断逻辑,导致numpy对所有列的元素都做了条件校验。只需要明确指定提取第一列做条件判断即可,核心代码如下:
# 仅对第一列做条件校验,返回符合条件的行索引 result_index = np.where((10 < arr[:, 0]) & (arr[:, 0] < 15))[0]
完整可运行示例
import numpy as np # 你的原始矩阵 arr = np.array([ [11., 5.], [24., 6.], [39., 12.], [14., 1.], [25., 12.] ]) # 执行筛选 mask = (10 < arr[:, 0]) & (arr[:, 0] < 15) result_index = np.where(mask)[0] print(result_index) # 输出 [0 3]
补充说明
- 多维矩阵索引
arr[:, 0]代表取所有行的第0列(也就是你需要的第一列),仅对这部分数据做条件判断,得到的布尔掩码长度和矩阵行数一致 - numpy中多条件判断需要用
&(且)、|(或)连接,每个条件都要用括号包裹,否则会触发运算符优先级错误
内容的提问来源于stack exchange,提问作者Simon2215
相关产品推荐
相关产品推荐

