所以我有一个名为 sumErrors 的列表,它有 16000 行和 1 列,并且这个列表已经预分类为 5 个不同的集群。我正在做的是对每个集群的列表进行切片,并在每个切片中找到最小值的索引。
但是,我只能使用 argmin() 找到第一个最小索引。我认为我不能只删除该值,否则它会将切片移动,而索引是我恢复原始 ID 所必须的。有谁知道如何让 argmin() 吐出最低三个的索引?
或者也许是更优化的方法?也许我应该只分配身份证号码,但我觉得可能有更优雅的方法。
Numpy 包含一个argsort
将返回所有索引的函数。如果我正确理解您的要求,您应该能够:
minidx = []
for cluster in sumErrors:
minidx.append(np.argsort(cluster)[:3])
numpy.argpartition(cluster, 3)
会更有效。