2017-02-12 8 views
0

リストがあるとします。l=[3,4,4,2,1,4,6] 値がmax(l)の要素のインデックスを含むこのリストのサブセットを取得したいと考えています。 この場合、インデックスのリストは[1,2,5]になります。リスト内の最大値を持つ要素のインデックスの取得方法

私は例

l=[1,2,3,4,3,2,2,3,4,5,6,7,5,4,3,2,2,3,4,3,4,5,6,7] 

のために、私は1つの以上の要素が表示されますただし場合には、要素の最大出現を特定する必要があり、番号のリストが提供され、問題を解決するために、このアプローチを使用しています同じ回数、 私は大きさが大きい要素を選択する必要があります。 私はlにカウンタを適用し、{1:5,2:5,3:4...}を得ると仮定して、 '1'ではなく '2'を選択する必要があります。 この

編集 - 問題はこのように始まり、 1)リストのカウントを取得するために入力

l=[1 4 4 4 5 3] 

2)私はこの上のカウンターを実行するとして提供されている解決方法を提案してください。各ユニークな要素

3)私は、その値が最大であるキーを取得する必要が

4)、カウンタオブジェクトは、その値が最大となる複数のエントリが含まれていると私は、その値がキーとして3を選択する必要が Counter{1:4,2:4,3:4,5:1}のように4

使用

5)これまでのところ、私はカウンターオブジェクトを取得することができた、私が区切られているキー/値リストk=counter.keys();v=counter.values()

6)私は値が最大であるインデックスを取得したい。 v.index(max(v))を実行すると、値が最大値と一致する最初のインデックスが得られるが、値のインデックスのリストを取得したいmaxであるので、対応するキーのリストを取得し、そのリスト内の最大キーを得ることができます。長いリストで

+0

あなたの質問は不明です。あなたの入力と希望する出力をより明確に記述してください。 – Jarvis

+0

4で 'l'から' Counter' dictへ行った方法を説明できますか? – Giridhur

+0

@Giridhur私はコレクションからカウンターをインポートし、カウンターへの引数としてリストを送信します。それはCounterオブジェクトを返します。4のように、私はちょうど1 –

答えて

0

、numpyのを使用して、または任意の他の線形代数が参考になる、そうでなければ、単にこれらしかし、一つだけのを返す

l.index(max(l))

または

max(range(len(l)),key=l)

のいずれかを使用することができます多くのargmaxです。

だからあなたの問題のために、あなたはあなたのように、後で表示される最大をしたいために、配列を逆に選択することができます。

len(l)-l[::-1].index(max(l))-1

+0

n-l [:: - 1] .index(max(l)) - 1で指定されたリストに関係しないかもしれない例を使用しました。 n –

+0

とは何ですか?まず、最大要素の値を調べ、リストを逆にして最大要素の位置を見つけて、最大要素のインデックスを取得します。 – Giridhur

0

私が正しく理解している場合、次のようにあなたが欲しいものを行う必要があります。

from collections import Counter 

def get_largest_most_freq(lst): 
    c = Counter(lst) 
    # get the largest frequency 
    freq = max(c.values()) 
    # get list of all the values that occur _max times 
    items = [k for k, v in c.items() if v == freq] 
    # return largest most frequent item 
    return max(items) 

def get_indexes_of_most_freq(lst): 
    _max = get_largest_most_freq(lst) 
    # get list of all indexes that have a value matching _max 
    return [i for i, v in enumerate(lst) if v == _max] 

>>> lst = [3,4,4,2,1,4,6] 
>>> get_largest_most_freq(lst) 
4 
>>> get_indexes_of_most_freq(lst) 
[1, 2, 5] 
>>> lst = [1,2,3,4,3,2,2,3,4,5,6,7,5,4,3,2,2,3,4,3,4,5,6,7] 
>>> get_largest_most_freq(lst) 
3 
>>> get_indexes_of_most_freq(lst) 
[2, 4, 7, 14, 17, 19] 
+0

それはそれを解決する! –

+0

@AshwinVこの問題が解決した場合は、お気軽にご同意ください。 –

関連する問題