Python의 numpy.argsort()

numpy.argsort() 함수는 kind 키워드로 지정된 알고리즘을 사용하여 지정된 축을 따라 간접 정렬을 수행하는 데 사용됩니다. 배열을 정렬하는 arr과 동일한 모양의 인덱스 배열을 반환합니다. 오름차순으로 정렬된 값의 인덱스를 의미합니다.

구문: numpy.argsort(arr, axis=-1, kind='quicksort', order=None)

매개변수:

    arr : [array_like] 입력 배열입니다. axis : [int or None] 정렬할 축입니다. 없음인 경우 정렬하기 전에 배열이 평면화됩니다. 기본값은 -1이며 마지막 축을 따라 정렬됩니다. 종류 : ['quicksort', 'mergesort', 'heapsort']선택 알고리즘. 기본값은 '퀵 정렬'입니다. order : [str or list of str] arr이 정의된 필드가 있는 배열인 경우 이 인수는 첫 번째, 두 번째 등을 비교할 필드를 지정합니다.

반품: [index_array, ndarray] 지정된 축을 따라 arr을 정렬하는 인덱스 배열입니다. arr이 1차원인 경우 arr[index_array]는 정렬된 arr을 반환합니다.

코드 #1:

파이썬3




# 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:

파이썬3




# 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])