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.
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
.
Array to sort.
Axis along which to sort. The default is -1 (the last axis). If None, the flattened array is used.
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.
The 'stable' option was added.
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.
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.
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.
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 :
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
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