为什么numpy给出了这个结果:
x = numpy.array([1.48,1.41,0.0,0.1])
print x.argsort()
>[2 3 1 0]
Run Code Online (Sandbox Code Playgroud)
当我希望它能做到这一点时:
[3 2 0 1]
显然我对这个功能的理解是缺乏的.
我有一个数字数组,我想创建另一个数组,表示第一个数组中每个项目的排名.我正在使用Python和NumPy.
例如:
array = [4,2,7,1]
ranks = [2,1,3,0]
Run Code Online (Sandbox Code Playgroud)
这是我提出的最佳方法:
array = numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]
Run Code Online (Sandbox Code Playgroud)
有没有更好/更快的方法避免两次排序数组?