python-3.x Argsort.argsort -它在做什么?

tzcvj98z  于 2023-02-26  发布在  Python
关注(0)|答案(4)|浏览(144)

为什么numpy给出这个结果:

x = numpy.array([-1,5,-2,0])

print x.argsort().argsort()

[1、3、0、2]

3okqufwl

3okqufwl1#

第一个x.argsort()函数返回的索引顺序与数组x的排序顺序相同,当你再次调用argsort函数时,你得到的是一个索引数组,它将对前面的索引数组进行排序:

x.argsort()
# array([2, 0, 3, 1])
x.argsort().argsort()
# array([1, 3, 0, 2])
# To sort the array x.argsort(), you start with index 1 which hold the value 0, and so on
vxqlmq5t

vxqlmq5t2#

argsort()给出排序数组的索引。
第一个argsort()结果为:[二、零、三、一]
第二个argsort()结果[1,3,0,2]
您可以在NumPy文档中找到详细信息。https://numpy.org/doc/stable/reference/generated/numpy.argsort.html

ha5z0ras

ha5z0ras3#

numpy.argsort函数
返回对数组进行排序的索引。

x = numpy.array([-1, 5, -2, 0])
print(x.argsort())  # [2 0 3 1]

要获得排序数组,需要使用顺序[2 0 3 1]

index [ 2  0 3 1]
        |  | | |
        v  v v v
value  -2 -1 0 5  << is sorted

调用x.argsort().argsort()与调用numpy.array([2, 0, 3, 1]).argsort()相同。

index [1 3 0 2]
       | | | |
       v v v v
value  0 1 2 3  << is sorted
wqsoz72f

wqsoz72f4#

实际上,这是一个很好的问题,这可以得到原始数组秩。
例如,数据= np.数组([0.9,0.5,0.3,0.6])
argsort()的输出是:array([3,1,0,2])。默认顺序为升序。
3是0.9的秩,1是0.5的秩,0是0.3的秩,2是0.6的秩。

相关问题