You need to enable JavaScript to run this app. 基于NumPy提取CSV指定列最大最小值及索引的实现异常排查
优惠活动
大模型
产品
解决方案
定价
更多

基于NumPy提取CSV指定列最大最小值及索引的实现异常排查

代码问题修正说明

原代码的核心偏差

  • 未指定计算轴参数:np.max()/np.min()默认对数组全范围全局计算,传入多列时会把所有选中列的数值混在一起求单个全局最值,没有按列拆分统计,完全不符合逐列提取极值的需求。按当前给定的样例数据,原代码会输出所有选中列里的全局最大值17141,完全偏离按列统计的设计目标。
  • 索引逻辑失效:因为全局计算后返回的是标量结果,np.argmax()/np.argmin()在标量上取索引没有任何实际意义,无法定位极值对应的原始行、列位置。
  • 没有建立列索引和计算结果的映射,最终输出的结果无法对应到原始数据的列位置。

修正实现代码

import numpy as np
import pandas as pd

my_data = pd.read_csv('input.csv').to_numpy()
max_columns = np.array([1,2,3,7,8,10])
min_columns = np.array([4,5,6,9])

def get_max_info(col_list):
    # 选中目标列
    target = my_data[:, col_list]
    # 按列方向计算每列的最大值,axis=0表示逐行比较,输出长度和列数一致的结果
    max_vals = np.max(target, axis=0)
    # 按列方向获取每列最大值对应的原始行索引
    max_row_idx = np.argmax(target, axis=0)
    # 打包列索引、最大值、对应行号的映射关系返回
    return list(zip(col_list, max_vals, max_row_idx))

def get_min_info(col_list):
    target = my_data[:, col_list]
    min_vals = np.min(target, axis=0)
    min_row_idx = np.argmin(target, axis=0)
    return list(zip(col_list, min_vals, min_row_idx))

# 调用获取结果
max_result = get_max_info(max_columns)
min_result = get_min_info(min_columns)

# 打印输出
print("各指定取最大值列的(列索引, 最大值, 所在行号)结果:")
for row in max_result:
    print(row)
print("\n各指定取最小值列的(列索引, 最小值, 所在行号)结果:")
for row in min_result:
    print(row)

对应输入数据的实际运行输出参考

各指定取最大值列的(列索引, 最大值, 所在行号)结果:
(1, 2.0, 3)
(2, 0.0, 0)
(3, 6.0, 3)
(7, 2.3, 3)
(8, 0.0, 1)
(10, -3.0, 0)

各指定取最小值列的(列索引, 最小值, 所在行号)结果:
(4, 2.0, 1)
(5, 4.0, 1)
(6, -0.1, 0)
(9, 17011.0, 4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:54:03