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.

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

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

Notes

xxx

See Also

lexsort : Indirect stable sort on multiple keys.

sort : Find keys in sorted array.

SciPy: argsort (last edited 2015-10-24 17:48:25 by anonymous)