This is an archival dump of old wiki content --- see scipy.org for current material

# Abstract

Performs a sort along the given axis using the algorithm specified. It returns an array of indices of the same shape.

•  Function Method Property

# Signature

Function

argsort (arr, axis=-1, kind='quick', order=None)

Method

arr.argsort (axis=-1, kind='quick', order=None)

Arguments

return

an array of indices of the same shape as arr.

arr
Array to be sorted.
axis
The axis the sort is applied to in a multi-dimensional array.
kind

The underlying algorithm to use. see: Sorting Algorithms for details.

• 'quick'
• 'heap'
• 'merge'
order
Used for arrays with fields defined. Can be one of the following:
• A single string.
• Indicates that field as the basis for the sort.
• A list or tuple of strings.
• Basis is in list order.
• None
• If fields are defined, then the first field is the basis.

# Details

## Sorting Algorithms

• The various sorts are characterized by average speed, worst case performance, need for work space, and whether they are stable. A stable sort keeps items with the same key in the same relative order. The three available algorithms have the following properties:
•  kind speed worst case work space stable quicksort 1 O(n^2) 0 no mergesort 2 O(n*log(n)) ~n/2 yes heapsort 3 O(n*log(n)) 0 no
All the sort algorithms make temporary copies of the data when the sort is not along the last axis. Consequently, sorts along the last axis are faster and use less space than sorts along other axis.

# Examples

```   1 >>> from numpy import *
2 >>> a = array([2,0,8,4,1])
3 >>> ind = a.argsort()               # indices of sorted array using quicksort (default)
4 >>> ind
5 array([1, 4, 0, 3, 2])
6 >>> a[ind]                          # same effect as a.sort()
7 array([0, 1, 2, 4, 8])
8 >>> ind = a.argsort(kind='merge')   # algorithm options are 'quicksort', 'mergesort' and 'heapsort'
9 >>> a = array([[8,4,1],[2,0,9]])
10 >>> ind = a.argsort(axis=0)         # sorts on columns. NOT the same as a.sort(axis=1)
11 >>> ind
12 array([[1, 1, 0],
13 [0, 0, 1]])
14 >>> a[ind,[[0,1,2],[0,1,2]]]        # 2-D arrays need fancy indexing if you want to sort them.
15 array([[2, 0, 1],
16 [8, 4, 9]])
17 >>> ind = a.argsort(axis=1)         # sort along rows. Can use a.argsort(axis=-1) for last axis.
18 >>> ind
19 array([[2, 1, 0],
20 [1, 0, 2]])
21 >>> a = ones(17)
22 >>> a.argsort()                     # quicksort doesn't preserve original order.
23 array([ 0, 14, 13, 12, 11, 10,  9, 15,  8,  6,  5,  4,  3,  2,  1,  7, 16])
24 >>> a.argsort(kind="mergesort")     # mergesort preserves order when possible. It is a stable sort.
25 array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])
26 >>> ind = argsort(a)                # there is a functional form
```

xxx