np.argsort()
如何处理关系?
test = [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0]
np.argsort(test)
为什么索引20在结果中排在首位?
我检查了其他资源,但找不到解释。是否在有联系的地方随机分配索引?谢谢!
array([20, 4, 5, 8, 9, 10, 11, 23, 17, 14, 15, 0, 22, 21, 19, 18, 12,
13, 7, 6, 3, 2, 1, 16, 24], dtype=int64)
最佳答案
numpy.argsort()
返回将对数组元素进行排序的数组索引。如果存在重复的条目,则返回的索引取决于用于对数组进行排序的排序算法的类型。根据此选择,您可能会看到不同的结果,如下所示:
# input
In [90]: a
Out[90]:
array([1., 1., 1., 1., 0., 0., 1., 1., 0., 0., 0., 0., 1., 1., 0., 0., 1.,
0., 1., 1., 0., 1., 1., 0., 1.])
# more intuitive
In [85]: np.argsort(a, kind='mergesort')
Out[85]:
array([ 4, 5, 8, 9, 10, 11, 14, 15, 17, 20, 23, 0, 1, 2, 3, 6, 7,
12, 13, 16, 18, 19, 21, 22, 24])
# default choice
In [86]: np.argsort(a, kind='quicksort')
Out[86]:
array([20, 4, 5, 8, 9, 10, 11, 23, 17, 14, 15, 0, 22, 21, 19, 18, 12,
13, 7, 6, 3, 2, 1, 16, 24])
In [88]: np.argsort(a, kind='heapsort')
Out[88]:
array([17, 11, 20, 8, 15, 14, 23, 10, 4, 9, 5, 13, 6, 12, 24, 2, 21,
19, 18, 16, 7, 22, 3, 1, 0])
# more intuitive
In [89]: np.argsort(a, kind='stable')
Out[89]:
array([ 4, 5, 8, 9, 10, 11, 14, 15, 17, 20, 23, 0, 1, 2, 3, 6, 7,
12, 13, 16, 18, 19, 21, 22, 24])
关于python - np.argsort()排名靠前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55554321/