14

したがって、16000行1列のsumErrorsというこのリストがあり、このリストはすでに5つの異なるクラスターに事前にソートされています。そして、私が行っているのは、各クラスターのリストをスライスし、各スライスの最小値のインデックスを見つけることです。

ただし、argmin()を使用して最初の最小インデックスを見つけることしかできません。値を削除するだけではいけないと思います。そうしないと、スライスがシフトし、インデックスが元のIDを復元する必要があるためです。argmin()を取得して下位3つのインデックスを吐き出す方法を知っている人はいますか?

それとももっと最適な方法ですか?ID番号だけを割り当てればいいのかもしれませんが、もっと洗練された方法があるのではないかと思います。

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 に答える