如何查找矩阵中不包含指定数值的对应列
实现方案
核心逻辑非常简单:遍历矩阵的每一列,检查该列的所有元素中是否不存在0.1,符合条件的列就是目标列。
1. 手动计算逻辑(通用)
- 逐列遍历:从第1列到最后1列依次检查
- 列内校验:对当前列的所有行元素逐一判断,只要出现1次
0.1就排除该列 - 结果汇总:所有未被排除的列号即为符合要求的结果
以你给出的矩阵为例:
- 第1列有
0.1(行2)→ 排除 - 第2列有
0.1(行2)→ 排除 - 第3列有
0.1(行1)→ 排除 - 第4列有
0.1(行3)→ 排除 - 第5列有
0.1(行3)→ 排除 - 第6列所有元素是
0.7、0.4、0.9,无0.1→ 符合要求
2. Python Numpy 实现
import numpy as np # 构造矩阵,仅保留数值部分,去掉表头的行号、列号 matrix = np.array([ [0.4, 0.5, 0.1, 0.3, 0.3, 0.7], [0.1, 0.1, 0.8, 0.7, 0.7, 0.4], [0.6, 0.2, 0.3, 0.1, 0.1, 0.9] ]) # axis=0表示按列判断,只要列内存在0.1就标记为待排除 mask = ~np.any(matrix == 0.1, axis=0) # 数组默认从0开始计数,加1匹配需求中从1开始的列号规则 result_columns = np.where(mask)[0] + 1 print(result_columns) # 输出 [6]
3. Python Pandas 实现
import pandas as pd # 构造DataFrame,列名对应需求里的1~6列号 df = pd.DataFrame({ 1: [0.4, 0.1, 0.6], 2: [0.5, 0.1, 0.2], 3: [0.1, 0.8, 0.3], 4: [0.3, 0.7, 0.1], 5: [0.3, 0.7, 0.1], 6: [0.7, 0.4, 0.9] }) # 筛选所有元素都不等于0.1的列 result = df.columns[~df.isin([0.1]).any()].tolist() print(result) # 输出 [6]
4. R 实现
# 构造矩阵 matrix <- matrix( c(0.4, 0.5, 0.1, 0.3, 0.3, 0.7, 0.1, 0.1, 0.8, 0.7, 0.7, 0.4, 0.6, 0.2, 0.3, 0.1, 0.1, 0.9), nrow = 3, byrow = TRUE ) # 查找不含0.1的列,R默认列号从1开始,直接匹配需求规则 result <- which(!apply(matrix == 0.1, 2, any)) print(result) # 输出 6
内容的提问来源于stack exchange,提问作者SssssssAaaaaaa
相关产品推荐
相关产品推荐

