Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのa.sort、sorted(a)、np_argsort(a)、np.lexsort(b、a)


特定の順序でのデータ要素の順序付けは、頻繁に必要な操作です。配列内の要素を並べ替えるために、Pythonはsorted()およびarray.sort()という名前の関数を使用します。

sorted(array)

この関数は、元の配列を変更せずに、ソートされた配列を返します。

a = [9,5,3,1,12,6]
b = sorted([9,5,3,1,12,6])
print "Sorted Array :\n",
print (b)
print "Original Array :\n",
print (a)

上記のコードを実行すると、次の結果が得られます-

Sorted Array :
[1, 3, 5, 6, 9, 12]
Original Array :
[9, 5, 3, 1, 12, 6]

list.sort()

sort関数は、指定された配列にインプレース変更を行うことにより、ソートされた配列を返します。したがって、元の配列は次の例に示すように変更されます。

a = [9,5,3,1,12,6]
print "Original Array :\n",
print (a)
print "Sorted Array :\n",
a.sort()
print (a)

上記のコードを実行すると、次の結果が得られます-

Original Array :
[9, 5, 3, 1, 12, 6]
Sorted Array :
[1, 3, 5, 6, 9, 12]

したがって、sorted()関数は、元の配列のコピーを作成してから変更するため、sort()よりも低速です。

より複雑なソート要件は、Numpyを使用して行われます。 Numpyは、多くの高度な機能を提供するため、科学データ処理で広く使用されているPythonライブラリです。以下の例では、純粋なPythonの並べ替え方法とNumpyの並べ替え方法の両方を確認します。

numpy.argsort

numpyのこの関数は、配列要素ではなく、ソートされた配列のインデックスを返します。次の例では、配列を取得し、その要素を各要素のインデックスとともに出力します。次に、結果としてソートされた配列のインデックスを提供するargsort関数を適用すると、結果も配列になります。

import numpy as np
x = np.array([9,5,3,1,12,6])
print(x)

#Print the positions of elements
for i in range(len(x)):
print "[",i,"]",x[i],
print "\n"
# Print the indices of sorted elements
s = np.argsort(x)
print(s)

上記のコードを実行すると、次の結果が得られます-

[ 9 5 3 1 12 6]

[ 0 ] 9 [ 1 ] 5 [ 2 ] 3 [ 3 ] 1 [ 4 ] 12 [ 5 ] 6

[3 2 1 5 0 4]

numpy.lexsort

この関数は、複数の配列を含む複数のソートキーを使用してソートするために使用されます。たとえば、最初に列Aでデータを並べ替え、次に列Bで値を並べ替えます。次の例では、列Aと列Bを表す2つの配列を使用します。lexsort()関数を適用して、最初に列Aで並べ替え、次に列で並べ替えます。 B列Aの要素のインデックスを含む配列としてソートした結果を取得します。

import numpy as np
colA = [2,5,1,8,1] # First column
colB = [9,0,3,2,0] # Second column
# Sort by ColA and then by colB
sorted_index = np.lexsort((colB,colA))
print(sorted_index)
#print the result showing the
#column values as pairs
print [(colA[i],colB[i]) for i in sorted_index]

上記のコードを実行すると、次の結果が得られます-

[4 2 0 1 3]
[(1, 0), (1, 3), (2, 9), (5, 0), (8, 2)]

ご覧のとおり、colAの最低2つの値は、インデックス位置2と4の1と1です。ただし、結果では、列Bのそれぞれの値である0と3も最初に並べ替えられるため、昇順として4と2が表示されます。 0、3、結果は4と2になります。


  1. Pythonプログラムでの挿入ソート

    この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム ソートされた配列を各反復で拡張することにより、入力要素を反復します。 現在の要素を、並べ替えられた配列で使用可能な最大値と比較します。 現在の要素の方が大きい場合は、その要素をそのままにして次の要素に移動します。それ以外の場合は、並べ替えられた配列内で正しい位置を見つけて、配列内のその位置に移動します。 これは、並べ替えられた配列内の現在の要素よりも大きいすべての要素を右にシフトすることで実現されます。 それでは、アルゴリズムの視覚的表現を見てみましょう

  2. 挿入ソート用のPythonプログラム

    この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム 1. Iterate over the input elements by growing the sorted array at each iteration. 2. Compare the current element with the largest value available in the sorted array. 3. If the current element is greater, then it leaves the element in its place &n