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])
我是一名优秀的程序员,十分优秀!