79

特定のリスト内の最大値のすべての出現を返す関数を見つけようとしています。

numpy.argmaxただし、見つかった最初のオカレンスのみを返します。例えば:

from numpy import argmax

list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
winner = argmax(list)

print winner

index のみを与えます0。しかし、私はそれがすべてのインデックスを与えることを望みます: 0, 3, 5.

4

4 に答える 4

107

のドキュメントにあるnp.argmaxように、「最大値が複数回発生した場合、最初の発生に対応するインデックスが返されます。」、別の戦略が必要になります。

あなたが持っている1つのオプションはnp.argwhere、と組み合わせて使用​​ することですnp.amax

>>> import numpy as np
>>> listy = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6]
>>> winner = np.argwhere(listy == np.amax(listy))
>>> print(winner)
 [[0]
  [3]
  [5]]
>>> print(winner.flatten().tolist()) # if you want it as a list
[0, 3, 5]
于 2013-07-10T10:53:39.347 に答える