【发布时间】:2018-10-03 14:25:08
【问题描述】:
最近,我一直在尝试 np.argsort,我发现了一些奇怪的东西。
如果你运行下面的代码,你会得到结果:
In [0]: np.argsort([3]*16)
Out[0]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
dtype=int64)
但如果你只做一点改变:
In [1]: np.argsort([3]*17)
Out[1]:
array([ 0, 14, 13, 12, 11, 10, 9, 15, 8, 6, 5, 4, 3, 2, 1, 7, 16],
dtype=int64)
我知道 numpy argsort 的默认方法是 quicksort,这是一种不稳定的排序算法。但是,对上述不同的行为有合理的解释吗?这与快速排序选择枢轴有关吗?如果是,为什么?
【问题讨论】:
标签: python python-3.x sorting numpy quicksort