numpy.argsort(a, axis=-1, kind='quicksort', order=None)
Returns the indices that would sort an array.
Perform an indirect sort along the given axis using the algorithm specified by the kind keyword. It returns an array of indices of the same shape as a that index data along the given axis in sorted order.
Parameters:
a : array_like
Array to sort.
axis : int or None, optional
Axis along which to sort. The default is -1 (the last axis). If None, the flattened array is used.
kind : {‘quicksort’, ‘mergesort’, ‘heapsort’}, optional
Sorting algorithm.
order : str or list of str, optional
When a is an array with fields defined, this argument specifies which fields to compare first, second, etc. A single field can be specified as a string, and not all fields need be specified, but unspecified fields will still be used, in the order in which they come up in the dtype, to break ties.
Returns:
index_array : ndarray, int
Array of indices that sort a along the specified axis. If a is one-dimensional, a[index_array] yields a sorted a.
例1:
x = np.array([3, 1, 2])
np.argsort(x) #按升序排列array([1, 2, 0])
np.argsort(-x) #按降序排列array([0, 2, 1])
x[np.argsort(x)] #通过索引值排序后的数组array([1, 2, 3])
x[np.argsort(-x)]array([3, 2, 1])
另一种方式实现按降序排序:
a = x[np.argsort(x)]
aarray([1, 2, 3])
a[::-1]array([3, 2, 1])