我有一个二维的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"]
最终数组仍将保持不变。 此外,如果该数组包含一个键(即行键)在键中不存在,那么该行也将从最终数组中省略。 编辑2: 从尼克的答案开始,我想出了这个处理缺失键的方法。
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']]
sample_ids = ["aaa", "aaa", "ddd"]
) - ken