Numpy argsort函数返回索引顺序异常问题求解
Numpy argsort相等元素索引顺序翻转问题原因
这个现象的核心原因是Numpy的argsort方法默认使用*不稳定的快速排序(quicksort)*作为排序算法:
- 不稳定排序的特性是:当数组中存在多个相等值的元素时,不会保证这些相等元素在原数组中的相对先后顺序在排序结果中保留。
- 你给出的数组里,索引8和索引9对应的元素值都是5,属于相等值,默认的快速排序不会特意保留二者原来的先后关系,因此最终返回的索引中就可能出现9排在8前面的翻转情况。
如果需要严格保留相等元素的原有先后顺序,可以手动指定使用稳定排序算法,比如归并排序:
print(arr1.argsort(kind='mergesort'))
上述代码返回的索引序列就会符合你预期的严格按原顺序排列的结果。
内容的提问来源于stack exchange,提问作者Kosu K.
相关产品推荐
相关产品推荐

