如何筛选Numpy数组中第二个元素大于倒数第二个元素的行
Numpy 数组按行条件筛选实现
直接使用Numpy布尔索引即可实现需求,不需要循环遍历,性能更高。
完整代码示例
import numpy as np # 输入示例数组 input_arr = np.array([ [5, 0, 3, 3], [7, 9, 3, 5], [2, 4, 7, 6], [8, 8, 1, 6] ]) # 生成筛选掩码:每行第二个元素(索引为1) > 每行倒数第二个元素(索引为-2) filter_mask = input_arr[:, 1] > input_arr[:, -2] # 筛选符合条件的行 output_arr = input_arr[filter_mask] print(output_arr)
输出结果
[[7 9 3 5] [8 8 1 6]]
逻辑说明
- Numpy数组索引从0开始计数,
[:, 1]表示取所有行的第二个元素,[:, -2]表示取所有行的倒数第二个元素,该写法对任意列数≥2的数组都能生效 - 布尔索引是Numpy原生特性,对比逐行循环判断的写法,数据量越大性能优势越明显
内容的提问来源于stack exchange,提问作者Meisternoob
相关产品推荐
相关产品推荐

