[Numpy-discussion] numpy function to compute sample ranks

Keith Goodman kwgoodman@gmail....
Sun Nov 2 12:35:11 CST 2008

On Sun, Nov 2, 2008 at 10:24 AM, Abhimanyu Lad <abhimanyulad@gmail.com> wrote:
> Is there a direct or indirect way in numpy to compute the sample ranks of a
> given array, i.e. the equivalent of rank() in R.
> I am looking for:
> rank(array([6,8,4,1,9])) -> array([2,3,1,0,4])
> Is there some clever use of argsort() that I am missing?

If there are no NaNs and no ties, then:

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

If you have ties, then scipy has a ranking function.

More information about the Numpy-discussion mailing list