特定のリスト内の最大値のすべての出現を返す関数を見つけようとしています。
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.
特定のリスト内の最大値のすべての出現を返す関数を見つけようとしています。
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.
のドキュメントにある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]