为什么numpy给出这个结果:
x = numpy.array([-1,5,-2,0]) print x.argsort().argsort()
[1、3、0、2]
3okqufwl1#
第一个x.argsort()函数返回的索引顺序与数组x的排序顺序相同,当你再次调用argsort函数时,你得到的是一个索引数组,它将对前面的索引数组进行排序:
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
vxqlmq5t2#
argsort()给出排序数组的索引。第一个argsort()结果为:[二、零、三、一]第二个argsort()结果[1,3,0,2]您可以在NumPy文档中找到详细信息。https://numpy.org/doc/stable/reference/generated/numpy.argsort.html
ha5z0ras3#
numpy.argsort函数返回对数组进行排序的索引。
numpy.argsort
x = numpy.array([-1, 5, -2, 0]) print(x.argsort()) # [2 0 3 1]
要获得排序数组,需要使用顺序[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()相同。
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
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的秩。
4条答案
按热度按时间3okqufwl1#
第一个
x.argsort()
函数返回的索引顺序与数组x
的排序顺序相同,当你再次调用argsort
函数时,你得到的是一个索引数组,它将对前面的索引数组进行排序:vxqlmq5t2#
argsort()给出排序数组的索引。
第一个argsort()结果为:[二、零、三、一]
第二个argsort()结果[1,3,0,2]
您可以在NumPy文档中找到详细信息。https://numpy.org/doc/stable/reference/generated/numpy.argsort.html
ha5z0ras3#
numpy.argsort
函数返回对数组进行排序的索引。
要获得排序数组,需要使用顺序
[2 0 3 1]
调用
x.argsort().argsort()
与调用numpy.array([2, 0, 3, 1]).argsort()
相同。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的秩。