numpy は、多次元配列内の N 個の最大要素を評価できますか? 言う:
import numpy as np
a=[1,2,3]
b=a.max(num_of_max_elements=2) #I know it won't work, and I want it to be 2 and 3
これを行う最も簡単な方法は、並べ替えてから最後のn
数字を使用することです。これは、元の配列を変更せずに行うこともできます。10x10 配列で最大の 10 個の数値を見つける方法の例を次に示します。
a = numpy.random.randint(1000, size=100).reshape(10, 10)
indices = a.ravel().argsort()
print a.ravel()[indices[-10:]]
このコードは次のようなものを出力します
array([909, 917, 926, 936, 952, 960, 961, 964, 969, 993])
配列を逆に並べ替えて最初のN
要素を取得するのがおそらく最も効率的です。
a = [1,2,3]
sorted(a, reverse=True)[:2]
多次元配列で最大の要素を見つけたい場合は、a.ravel()
which を使用して 1 次元に展開します
書かれているように、これは実際には numpyを使用しませんが、 で同様のことを行うことができnp.sort
ます。[::-1]
np.sort(a.ravel())[::-1][:2]