通过近一整天的debug发现,python 中的 numpy.sort() 函数与 matlab 中的 sort() 函数的默认排序方法不同,从而也导致了当待排序的数组中存在多个相同数值时最后的排序结果也不尽相同。
当待排序的数组有多个可以排序的属性后,使用 matlab 中的 sort() 函数经过不同属性的多次排序后,可以得到想要的多个属性排序后排列数组(主要体现在数值相同的情况下); 而 python 中的 numpy.sort() 中快速排序、 归并排序和堆排序则达不到这个效果。
sort()函数的三种排序方法都是不稳定排序,因此python 可以考虑使用稳定的 sorted() 函数。 如果要返回稳定排序后的下标,可以在sorted()函数内部使用enumerate()函数。
1 | itemSorted = sorted(emuerate(item), key=lambda x:x[1]) |
部分内容节选自以下链接,侵权无意,告知立删:
sbj123456789: python中sorted排序后返回同时返回下标