1. ホーム
  2. python

[解決済み] NumPyの配列で、N個の最大値のインデックスを得るには?

2022-02-14 07:54:15

質問内容

NumPyでは、配列の最大値のインデックスを取得する方法として、以下の方法を提案しています。 np.argmax .

同じようなことをしたいのですが、その場合は N 最大値です。

例えば、配列があったとして [1, 3, 2, 4, 5] , function(array, n=3) はインデックスを返します。 [4, 3, 1] という要素に対応する [5, 4, 3] .

解決方法は?

私が思いついた最もシンプルなものは

In [1]: import numpy as np

In [2]: arr = np.array([1, 3, 2, 4, 5])

In [3]: arr.argsort()[-3:][::-1]
Out[3]: array([4, 3, 1])

これには、配列の完全なソートが必要です。もし numpy は、部分的なソートを行うための組み込みの方法を提供します; これまでのところ、私はそれを見つけることができませんでした。

この解決策が遅すぎることが判明した場合(特に小さな n でコーディングすることを検討する価値があるかもしれません。 Cython .