Numpyargsort-发生了什么?

我有一个名为arr1的 numpy 数组,定义如下。

arr1 = np.array([1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9])
print(arr1.argsort())

array([ 0,  1,  2,  3,  4,  5,  6,  7,  9,  8, 10, 11, 12, 13, 14, 15, 16,
        17], dtype=int64)

我希望数组的所有索引都按数字顺序排列,但索引 8 和 9 似乎已翻转。

有人可以帮助解释为什么会这样吗?

回答

np.argsort默认情况下使用不稳定的快速排序算法。您可以指定kind = "stable"执行稳定排序,这将保留相等元素的顺序:

import numpy as np 

arr1 = np.array([1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9])
print(arr1.argsort(kind="stable"))

它给:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17]


以上是Numpyargsort-发生了什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>