Python の numpy.argsort()
numpy.argsort() この関数は、kind キーワードで指定されたアルゴリズムを使用して、指定された軸に沿って間接的な並べ替えを実行するために使用されます。配列をソートする arr と同じ形状のインデックスの配列を返します。値の小さい順に並べたインデックスを意味します
構文: numpy.argsort(arr, axis=-1, kind=’クイックソート’, order=None)
パラメーター:
arr : [array_like] 入力配列。 axis : [int または None] 並べ替える軸。 None の場合、配列は並べ替え前にフラット化されます。デフォルトは -1 で、最後の軸に沿って並べ替えられます。 kind : [「クイックソート」、「マージソート」、「ヒープソート」]選択アルゴリズム。デフォルトは「クイックソート」です。 order : [str または str のリスト] arr がフィールドが定義された配列である場合、この引数は最初、2 番目などに比較するフィールドを指定します。
戻る: [index_array, ndarray] 指定された軸に沿って arr を並べ替えるインデックスの配列。arr が 1 次元の場合、arr[index_array] は並べ替えられた arr を返します。
コード #1:
Python3
# Python program explaining> # argpartition() function> import> numpy as geek> # input array> in_arr> => geek.array([> 2> ,> 0> ,> 1> ,> 5> ,> 4> ,> 1> ,> 9> ])> print> (> 'Input unsorted array : '> , in_arr)> out_arr> => geek.argsort(in_arr)> print> (> 'Output sorted array indices : '> , out_arr)> print> (> 'Output sorted array : '> , in_arr[out_arr])> |
出力:
Input unsorted array : [2 0 1 5 4 1 9] Output sorted array indices : [1 2 5 0 4 3 6] Output sorted array : [0 1 1 2 4 5 9]
コード #2:
Python3
# Python program explaining> # argpartition() function> import> numpy as geek> # input 2d array> in_arr> => geek.array([[> 2> ,> 0> ,> 1> ], [> 5> ,> 4> ,> 3> ]])> print> (> 'Input array : '> , in_arr)> # output sorted array indices> out_arr1> => geek.argsort(in_arr, kind> => 'mergesort'> , axis> => 0> )> print> (> 'Output sorted array indices along axis 0: '> , out_arr1)> out_arr2> => geek.argsort(in_arr, kind> => 'heapsort'> , axis> => 1> )> print> (> 'Output sorteded array indices along axis 1: '> , out_arr2)> |
出力:
Input array : [[2 0 1] [5 4 3]] Output sorted array indices along axis 0: [[0 0 0] [1 1 1]] Output sorted array indices along axis 1: [[1 2 0] [2 1 0]]
コード #3:
パイソン
# get two largest value from numpy array> x> => np.array([> 12> ,> 43> ,> 2> ,> 100> ,> 54> ,> 5> ,> 68> ])> # using argsort get indices of value of arranged in ascending order> np.argsort(x)> #get two highest value index of array> np.argsort(x)[> -> 2> :]> # to arrange in ascending order of index> np.argsort(x)[> -> 2> :][::> -> 1> ]> # to get highest 2 values from array> x[np.argsort(x)[> -> 2> :][::> -> 1> ]]> |
出力:
array([2, 5, 0, 1, 4, 6, 3], dtype=int32) array([6, 3], dtype=int32) array([3, 6], dtype=int32) array([100, 68])