numpy 1.22.4 Pypi GitHub Homepage
Other Docs
NotesParametersReturnsBackRef
argsort(a, axis=-1, kind=None, order=None)

Perform an indirect sort along the given axis using the algorithm specified by the :None:None:`kind` keyword. It returns an array of indices of the same shape as a that index data along the given axis in sorted order.

Notes

See sort for notes on the different sorting algorithms.

As of NumPy 1.4.0 argsort works with real/complex arrays containing nan values. The enhanced sort order is documented in sort .

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', 'stable'}, optional

Sorting algorithm. The default is 'quicksort'. Note that both 'stable' and 'mergesort' use timsort under the covers and, in general, the actual implementation will vary with data type. The 'mergesort' option is retained for backwards compatibility.

versionchanged

The 'stable' option was added.

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 :None:None:`axis`. If a is one-dimensional, a[index_array] yields a sorted a. More generally, np.take_along_axis(a, index_array, axis=axis) always yields the sorted a, irrespective of dimensionality.

Returns the indices that would sort an array.

See Also

argpartition

Indirect partial sort.

lexsort

Indirect stable sort with multiple keys.

ndarray.sort

Inplace sort.

sort

Describes sorting algorithms used.

take_along_axis

Apply index_array from argsort to an array as if by calling sort.

Examples

One dimensional array:

>>> x = np.array([3, 1, 2])
... np.argsort(x) array([1, 2, 0])

Two-dimensional array:

>>> x = np.array([[0, 3], [2, 2]])
... x array([[0, 3], [2, 2]])
>>> ind = np.argsort(x, axis=0)  # sorts along first axis (down)
... ind array([[0, 1], [1, 0]])
>>> np.take_along_axis(x, ind, axis=0)  # same as np.sort(x, axis=0)
array([[0, 2],
       [2, 3]])
>>> ind = np.argsort(x, axis=1)  # sorts along last axis (across)
... ind array([[0, 1], [0, 1]])
>>> np.take_along_axis(x, ind, axis=1)  # same as np.sort(x, axis=1)
array([[0, 3],
       [2, 2]])

Indices of the sorted elements of a N-dimensional array:

>>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape)
... ind (array([0, 1, 1, 0]), array([0, 0, 1, 1]))
>>> x[ind]  # same as np.sort(x, axis=None)
array([0, 2, 2, 3])

Sorting with keys:

>>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])
... x array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])
>>> np.argsort(x, order=('x','y'))
array([1, 0])
>>> np.argsort(x, order=('y','x'))
array([0, 1])
See :

Back References

The following pages refer to to this document either explicitly or contain code examples using this.

numpy.take_along_axis numpy.lexsort pandas.core.indexes.base.Index.argsort pandas.core.frame.DataFrame.sort_values pandas.core.arrays.base.ExtensionArray.argsort numpy.ma.core.MaskedArray.sort pandas.core.generic.NDFrame.sort_values numpy.argpartition numpy.transpose numpy.lib.arraysetops numpy.put_along_axis numpy.core._multiarray_umath.lexsort numpy.sort numpy.argsort

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


GitHub : /numpy/core/fromnumeric.py#1012
type: <class 'function'>
Commit: