gpt4 book ai didi

python - numpy argsort 可以返回较低的关系索引吗?

转载 作者:太空狗 更新时间:2023-10-30 02:55:17 25 4
gpt4 key购买 nike

我有一个 numpy 数组:

foo = array([3, 1, 4, 0, 1, 0])

我想要前 3 项。呼唤

foo.argsort()[::-1][:3]

返回

array([2, 0, 4])

注意值 foo[1]foo[4] 是相等的,因此 numpy.argsort() 通过返回数组中最后出现的项目的索引;即索引 4。

对于我的应用程序,我希望打破平局返回数组中最先出现的项目的索引(此处为索引 1)。我如何有效地实现它?

最佳答案

简单的这个怎么样?

(-foo).argsort(kind='mergesort')[:3]

为什么会这样:

Args 降序排序(不是 np.argsort 所做的)与 args 升序排序(np.argsort 所做的)相同,相反的值。然后您只需要选择前 3 个排序的索引。现在您所需要的就是确保排序稳定,这意味着在出现平局的情况下,首先保留第一个索引。注意:我认为默认的 kind=quicksort 是稳定的,但从文档看来只有 kind=mergesort 保证是稳定的:(https://docs.scipy.org/doc/numpy/reference/generated/numpy.sort.html)

The various sorting algorithms are characterized by their average speed, worst case performance, work space size, and whether they are stable. A stable sort keeps items with the same key in the same relative order. The three available algorithms have the following properties:

kind speed worst case work space stable

‘quicksort’ 1 O(n^2) 0 no

‘mergesort’ 2 O(n*log(n)) ~n/2 yes

‘heapsort’ 3 O(n*log(n)) 0 no

关于python - numpy argsort 可以返回较低的关系索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com