You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按指定行条件筛选矩阵并查找最小值及所在列

解决方案

步骤说明

  1. 先筛选出第2行值为1的所有列
  2. 在这些列的第1行中找到最小值对应的列
  3. 提取该列的完整数据

代码实现(以NumPy为例)

假设你的矩阵存储在arr中(注意:Python中索引从0开始,所以第1行对应arr[0],第2行对应arr[1]):

import numpy as np

# 示例矩阵,模拟你的数据
arr = np.array([
    [0.98, 0.941, 0.95],
    [0, 1, 1],
    [0.12, 0.210, 0.18]
])

# 1. 获取第2行(索引1)值为1的列索引
valid_cols = np.where(arr[1] == 1)[0]

# 2. 从这些列中提取第1行(索引0)的数据,找到最小值的索引
min_idx_in_valid = np.argmin(arr[0][valid_cols])
target_col_idx = valid_cols[min_idx_in_valid]

# 3. 提取目标列
result = arr[:, target_col_idx]
print(result)  # 输出: [0.941 1.    0.21 ]

问题原因分析

你用np.amin(df, axis=2)得到第2行是0,是因为axis=2是针对三维数组的轴,而你的数据是二维矩阵,轴参数使用错误;更关键的是你没有先筛选符合条件的列,直接全局取最小值会包含不符合要求的列,最终导致结果异常。

代码实现(以Pandas为例)

如果用DataFrame处理:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'Driver 1': [0.98, 0, 0.12],
    'Driver 3': [0.941, 1, 0.210],
    'Driver 2': [0.95, 1, 0.18]
})

# 1. 筛选第2行(索引1)值为1的列
valid_cols = df.columns[df.iloc[1] == 1]

# 2. 找到第1行(索引0)最小值对应的列
target_col = df.loc[0, valid_cols].idxmin()

# 3. 提取目标列
result = df[target_col].values
print(result)  # 输出: [0.941 1.    0.21 ]

内容的提问来源于stack exchange,提问作者learning101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:15:54