インデックスのリストをPythonで指しているもので並べ替えるにはどうすればよいですか?インデックスの並べ替え
私は
indices = list(range(len(mylist)))
を持っa
が、その後の指標mylist[a] > mylist[b]
でb
の前にあれば、私はそのようインデックスをソートしたいです。
インデックスのリストをPythonで指しているもので並べ替えるにはどうすればよいですか?インデックスの並べ替え
私は
indices = list(range(len(mylist)))
を持っa
が、その後の指標mylist[a] > mylist[b]
でb
の前にあれば、私はそのようインデックスをソートしたいです。
のPython 2.6+、最もエレガントな答え:
indices.sort(key = lambda x:mylist[x], reverse = True)
indicies.sort(lambda x,y:mylist[x]-mylist[y])
また、私が先行 場合のa、bようにインデックスをソートしたい
...私はあなたの元の質問で提供された情報を使用して、答えとして次のスニペットを追加してみましょうインデックスはmylist [a]> mylist [b]です。
...とマイリストが numpyのfloatのリストがあるものならば、あなたのコメントも
で持っている追加情報、?
その後、あなたは、単に行うことができます。
In [2]: import numpy
In [3]: a = numpy.asarray([-1, 2.73, 15.827, -8.48, 9, 13, 15, 3.22, 0, -1, 1])
In [4]: indices = a.argsort()[::-1]
Out[4]: array([ 2, 6, 5, 4, 7, 1, 10, 8, 9, 0, 3])
In [5]: a[indices]
Out[5]:
array([ 15.827, 15. , 13. , 9. , 3.22 , 2.73 , 1. ,
0. , -1. , -1. , -8.48 ])
面白い、ありがとう! –
は私が仕事にソート得るために何かをインポートする必要がありますか? –
私の編集を参照してください、申し訳ありません。 Sortはリスト関数です – dfb
また、mylistがnumpy浮動小数点数のリストであればどうでしょうか?次に、整数を返す符号関数が必要です。 'int(numpy.sign(...))'は私ができる最高のものですか? –