pythonarrayssortingnumpyrecarray

Sorting a python array/recarray by column


I have a fairly simple question about how to sort an entire array/recarray by a given column. For example, given the array:

import numpy as np
data = np.array([[5,2], [4,1], [3,6]])

I would like to sort data by the first column to return:

array([[3,6], [4,1], [5,2]])

Solution

  • Use data[np.argsort(data[:, 0])] where the 0 is the column index on which to sort:

    In [27]: import numpy as np
    
    In [28]: data = np.array([[5,2], [4,1], [3,6]])
    
    In [29]: col = 0
    
    In [30]: data=data[np.argsort(data[:,col])]
    Out[30]: 
    array([[3, 6],
           [4, 1],
           [5, 2]])