在python/numpy中通过argmin()或min()查找前三个值的索引而没有列表变异?

Shi*_*tsu 11 python numpy list min

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

但是,我只能使用argmin()找到第一个最小索引.我不认为我可以删除该值,因为否则它将切换切片并且索引是我必须恢复原始ID.有谁知道如何让argmin()吐出最低三的指数?

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

mtr*_*trw 13

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

minidx = []
for cluster in sumErrors:
    minidx.append(np.argsort(cluster)[:3])
Run Code Online (Sandbox Code Playgroud)