14

所以我有一个名为 sumErrors 的列表,它有 16000 行和 1 列,并且这个列表已经预分类为 5 个不同的集群。我正在做的是对每个集群的列表进行切片,并在每个切片中找到最小值的索引。

但是,我只能使用 argmin() 找到第一个最小索引。我认为我不能只删除该值,否则它会将切片移动,而索引是我恢复原始 ID 所必须的。有谁知道如何让 argmin() 吐出最低三个的索引?

或者也许是更优化的方法?也许我应该只分配身份证号码,但我觉得可能有更优雅的方法。

4

2 回答 2

15

Numpy 包含一个argsort将返回所有索引的函数。如果我正确理解您的要求,您应该能够:

minidx = []
for cluster in sumErrors:
    minidx.append(np.argsort(cluster)[:3])
于 2012-12-08T23:42:38.817 回答
4

numpy.argpartition(cluster, 3)会更有效。

于 2016-05-08T00:01:35.310 回答