いくつかの一般的な方法は、ソート、numpyのnarrayデータ構造を--argsort、および組み込みメソッドは、ソート

numpy.argsort

この方法は、入力されソートされた配列である新しい配列を返しますが、配列要素のインデックスは、元の配列の各要素の位置に対応しています

x= np. array([3,1,2])
np.argsort(x)

>>> array([1,2,0])

見つけることができるこの機能は、デフォルトの昇順であります

それは多次元配列の場合は、軸のキーワードを変更することができます

x = np.array([ [0,3],[2,2] ])
>>>x
> array([[0,3],
>        [2,2]
> ]
>>>np.argsort(x,axis = 0)
> array([[0,1],
>        [1,0]
> ])

あなたがハイからローにソートしたい場合は、あなたが使用することができます

np.argsort( -x )

並べ替え

このメソッドは構築されているPythonのメソッドが新しいのソートされたリストで反復可能オブジェクトから返される場合があり
、プロトタイプ
ソート(反復可能な[、CMP、[
、キー[は、=真]]リバース]) パラメータ:
CMPは:カスタムを指定します。最初のパラメータが二番目の引数に等しい場合、ゼロを返す;最初の場合は、最初のパラメータは、二番目の引数より小さい場合、二つの引数(イテラブル要素)をとり、負の値を返す比較関数パラメータは、二番目のパラメータよりも大きい整数、デフォルト値なしを返します。
キー:各要素の比較からキーワードを抽出するための機能、パラメータを受け入れる関数を指定します。デフォルト値は(要素自体でなければなりません)Noneです
リバース:ブール値です。Trueに設定すると、リストの要素の順序は逆になります。

シンプルな使い方

>>>sorted([5,4,3,2,1])
>[1,2,3,4,5]

それはソートする場所ですが、便利なソートほど良好ではない、リストのために有用であるに参照するための方法はlist.sortは()、効率が高くなります

sorted({1:'D',2:'B',3:'B',4:"E",5:'A'})   [1,2,3,4,5]

これは重要な要素のリストを返し、デフォルトではキーをソートするキーワード辞書として使用することです

時には、あなたのような、独自のキーワードを指定することができます

>>>sorted("This is a test string from Andrew".split(), key=str.lower) 
>['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

キーワードを比較することは関係なく、大文字小文字の比較、str.lowerです

比較上、複雑なオブジェクトのためのキーワードとして、スライスオブジェクトを使用することです。あります

>>>student_tuples = [ ('john','A',15),( 'jane','B',12 ),('dave','B',10) ]
>>>sorted( student_tuples, key = lambda student: student[2] )
>[('dave','B',10),( 'jane','B',12 ),('john','A',15)]

上記は、ソートキーワードとして年齢を使用することです

ソートするオペレータのitemgetterとattrgetter機能を使用して
、キーのキーワードのカスタム比較関数法を用いたことは非常に一般的ですので、オペレータモジュールは、指定されたキーワードを比較するitemgetterとattrgetterする方法を提供します

from operator import itemgetter,attrgetter
sorted( student_tuples,key = itemgetter(2) ) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

その値は、キー値の比較として、第二の位置の要素をイテレート可能オブジェクト。
要素は複数の属性である場合、オブジェクトはattrgetter指定されたオブジェクト名を比較するためにも使用することができます

sorted(student_objects,key = attrgetter('age') 

オペレータモジュールはまた、年齢の後には、そのようなプレス性能として、マルチレベルのソートをサポートしています

sorted(student_tuples, key=itemgetter(1,2)) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] 
sorted(student_objects, key=attrgetter('grade', 'age')) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

機械学習戦闘上のコードのように作品があります

sortedClassCount = sorted( classCount.iteritems(),key = itemgetter(1),reverse = True )

classcount辞書は、iteritems(中央)はキーと値のペアは、キーの後、元のグループのリストを形成し、そのような(「B」、15)のようなタプルの形式に変換されますある= itemgetter(1)後者の意味であると降順で投票値。

無iteritems 3.0このメンバー関数が、アイテムの機能があり、辞書に変換することができることは反復可能であることができます

 >> mat.items()
 >>dict_items([(1, 2), (3, 4)])

attrgetterとitemgetter出会いは、オブジェクトの複数のプロパティを持っている場合、最初の気持ち、あなたは複数の優先順位ソート複合体を設定することができます

おすすめ

転載: blog.csdn.net/ronaldo_hu/article/details/51240745