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=[('x', ' <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="('x','y'))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[('x', ' <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 'a' using np.array() function with dtype=[('x', ' <i4'), ('y', ' <i4')].< li> <li>We have declared the variables 'b' and 'c' and assigned the returned value of np.argsort() function.</li> <li>We have passed the array 'a' and order as an argument in the function.</li> <li>Lastly, we tried to print the value of 'b' and 'c'.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[('x', ' <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>