logo

Python の numpy.argsort()

NumPy モジュールは関数 argsort() を提供し、配列をソートするインデックスを返します。

NumPy モジュールは、キーワードで指定されたアルゴリズムを使用して、指定された軸に沿って間接ソートを実行する関数を提供します。この関数は、配列をソートする「a」と同じ形状のインデックスの配列を返します。

構文

 numpy.argsort(a, axis=-1, kind=None, order=None) 

パラメーター

これらは、numpy.argsort() 関数の次のパラメータです。

クイックソートアルゴリズム

a: 配列のようなもの

このパラメータは、並べ替えるソース配列を定義します。

軸: int または None (オプション)

このパラメータは、並べ替えが実行される軸を定義します。デフォルトでは、軸は -1 です。このパラメータを None に設定すると、フラット化された配列が使用されます。

人工知能とインテリジェントエージェント

種類: {'クイックソート'、'マージソート'、'ヒープソート'、'安定'}(オプション)

このパラメータは並べ替えアルゴリズムを定義します。デフォルトでは、アルゴリズムは次のとおりです。 クイックソート 。両方 マージソート そして 安定した 内部では時間ソートを使用しています。実際の実装はデータ型によって異なります。の マージソート このオプションは下位互換性のために残されています。

順序: str または str のリスト (オプション)

'a' が定義されたフィールドを持つ配列の場合、この引数は最初、2 番目などに比較するフィールドを指定します。単一のフィールドは文字列として指定でき、すべてのフィールドを指定する必要はありません。ただし、指定されていないフィールドは、dtype に出現する順序で、関係を解除するために引き続き使用されます。

戻り値: インデックス配列: ndarray、int

この関数は、指定された軸に沿って「a」をソートするインデックスの配列を返します。 「a」が 1 次元の場合、a[index_array] はソートされた「a」を生成します。より一般的には、 np.take_along_axis(arr1、index_array、axis=axis) 次元に関係なく、常にソートされた 'a' が得られます。

例 1: np.argsort()

 import numpy as np a=np.array([456,11,63]) a b=np.argsort(a) b 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.array() 関数を使用して配列 'a' を作成しました。
  • 変数「b」を宣言し、np.argsort() 関数の戻り値を代入しました。
  • 関数に配列 'a' を渡しました。
  • 最後に、b の値を出力してみました。

出力では、インデックス (ソートされた配列の要素の位置を示す) と dtype を含む ndarray が表示されます。

出力:

 array([456, 11, 63]) array([1, 2, 0], dtype=int64) 

例 2: 2 次元配列の場合 (最初の軸 (下方向) に沿ってソートします)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices 

出力:

JavaScript オンクリック
 array([[0, 1], [1, 0]], dtype=int64) 

例3: 2次元配列の場合(axis=0の代替)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices np.take_along_axis(a, indices, axis=0) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.array() 関数を使用して 2 次元配列 'a' を作成しました。
  • 変数インデックスを宣言し、np.argsort() 関数の戻り値を割り当てました。
  • 2 次元配列 'a' と axis を 0 として渡しました。
  • 次に、take_along_axis() 関数を使用して、ソース配列、インデックス、軸を渡しました。
  • この関数は、ソートされた 2 次元配列を返しました。

出力には、ソートされた要素を含む 2 次元配列が表示されます。

出力:

 array([[0, 2], [3, 5]]) 

例 4: 2 次元配列の場合 (最後の軸 (横方向) に沿ってソート)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices 

出力:

クロムアドレスバー
 array([[0, 1], [1, 0]], dtype=int64) 

例5: 2次元配列の場合(axis=1の代替)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices np.take_along_axis(a, indices, axis=1) 

出力:

 array([[0, 2], [3, 5]]) 

例 6: N-D 配列の場合

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.unravel_index(np.argsort(a, axis=None), a.shape) indices a[indices] # same as np.sort(a, axis=None) 

出力:

 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.array() 関数を使用して 2 次元配列 'a' を作成しました。
  • 変数「indices」を宣言し、np.unravel_index() 関数の戻り値を割り当てました。
  • np.argsort() 関数と配列 'a' の形状を渡しました。
  • argsort() 関数で 2 次元配列 'a' と axis を 1 として渡しました。
  • 次に、indexs と a[indices] の値を出力してみました。

出力には、ソートされた要素を含む N 次元配列が表示されます。

例 7: キーによる並べ替え

 import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="(&apos;x&apos;,&apos;y&apos;))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) array([0, 1], dtype="int64)" array([1, 0], < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created a 2-D array &apos;a&apos; using np.array() function with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')].< li> <li>We have declared the variables &apos;b&apos; and &apos;c&apos; and assigned the returned value of np.argsort() function.</li> <li>We have passed the array &apos;a&apos; and order as an argument in the function.</li> <li>Lastly, we tried to print the value of &apos;b&apos; and &apos;c&apos;.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>