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

如何将两列二维numpy数组按第二列数值从大到小降序排序

问题原因

  • 你初始化representative_models时指定了int数据类型,但第一列是字符串类型的车型名称,插入数据后整个数组会自动转换为字符串类型,导致第二列的计数也变成字符串格式,排序时按字典序而非数值大小执行,结果不符合预期。
  • argsort()默认返回升序排列的索引,你需要降序结果要对索引做倒序处理。

修复方案

方案1:仅修改排序逻辑

直接在你现有代码的基础上修改排序部分即可:

# 先将第二列转为整数类型,取负后用argsort得到降序索引,也可以用[::-1]反转升序索引
sorted_idx = np.argsort(-representative_models[:, 1].astype(int))
sorted_representative_models = representative_models[sorted_idx]
print(sorted_representative_models)

执行后输出就是你要求的预期结果。

方案2:优化全流程代码(推荐)

你当前用循环逐行append数组的写法效率很低,numpy原生支持批量操作,可改写为如下写法:

unique_models, count_of_models = np.unique(my_data_frame["model"], return_counts=True)
# 直接合并成二维数组
all_model_data = np.column_stack((unique_models, count_of_models))
# 用掩码拆分两类车型
mask = count_of_models >= 500
representative_models = all_model_data[mask]
other_models = all_model_data[~mask]
# 降序排序
sorted_rep_models = representative_models[np.argsort(-representative_models[:, 1].astype(int))]
print(sorted_rep_models)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:54:06