Rank elementos en una matriz usando Python / NumPy

Tengo una matriz de números y me gustaría crear otra matriz que represente el rango de cada elemento en la primera matriz. Estoy usando Python y NumPy.

Por ejemplo

array = [4,2,7,1]
ranks = [2,1,3,0]

Este es el mejor método que se me ocurrió:

array = numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]

Existen métodos mejores / más rápidos que eviten ordenar la matriz dos veces?