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

如何基于列表对二维numpy对象数组进行排序

按指定列表排序Numpy二维数组并处理缺失项

问题描述

我有一个二维Numpy对象数组:

aa = np.array([["aaa","05","1","a"],
               ["ccc","30","2","v"],
               ["ddd","50","2","v"],
               ["bbb","10","1","v"]])

同时有一个指定顺序的列表:

sample_ids = ["aaa", "bbb", "ccc", "ddd"]

需要基于这个列表对Numpy数组进行排序,得到如下结果:

[["aaa","05","1","a"],
 ["bbb","10","1","v"],
 ["ccc","30","2","v"],
 ["ddd","50","2","v"]]

补充说明

  • 若sample_ids中包含数组里没有的键,结果数组不会添加这些缺失键对应的空行。例如当sample_ids = ["aaa", "bbb", "ccc", "ddd", "eee"]时,最终结果仍和上述示例一致。
  • 若数组中存在sample_ids里没有的行,该行会被直接排除在结果数组之外。

实现代码及结果

基于Nick的思路,我编写了处理缺失键情况的代码:

sample_ids2 = ["aaa", "bbb", "eee", "ccc", "ddd"]

idxs = []
for i,v in enumerate(sample_ids2):
    if str(list(aa.T[0])).find(v) != -1:
        k = list(aa.T[0]).index(v)
        idxs.append(k)
    else:
        print(v + " was not found!!!")

print(aa[idxs])

运行后输出:

[['aaa' '05' '1' 'a']
 ['bbb' '10' '1' 'v']
 ['ccc' '30' '2' 'v']
 ['ddd' '50' '2' 'v']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:29