如何基于条件判断筛选移除NumPy数组的指定列
NumPy按条件筛选二维数组指定列的实现方式
你要的筛选逻辑可以直接通过NumPy的布尔索引实现,不需要额外写循环,步骤如下:
- 先基于相关系数数组,按设定的阈值条件生成布尔掩码数组
- 对二维数组做索引时,行维度传入
:表示保留所有行,列维度传入生成的布尔掩码,就会自动保留掩码值为True对应的列
完整实现代码:
import numpy as np # 原始相关系数数组 cors = np.array([0.5, -0.02, 0.2]) # 待处理的二维数组 raw_arr = np.array([ [0.42, 0.35, 0.6], [0.3, 0.34, 0.2] ]) # 生成筛选掩码 keep_mask = abs(cors) > 0.05 # 执行列筛选 result = raw_arr[:, keep_mask]
运行后result的输出和预期结果完全一致:
[[0.42 0.6] [0.3 0.2]]
注意:使用该方法时要保证布尔掩码的长度和待处理二维数组的列数相等,否则会触发维度不匹配的索引错误。
内容的提问来源于stack exchange,提问作者user1758952
相关产品推荐
相关产品推荐

