当前位置:   article > 正文

Numpy中排序操作partition,argpartition,sort,argsort_np.argsort argpartition

np.argsort argpartition

Numpy中的排序相关操作sort,argsort,partition,argpartition

今天遇见的程序里某一行需要用到numpy中的argpartition()函数,顺便复习一下numpy中的排序相关的函数

1.np.sort()

np.sort(a, axis=-1, kind='quicksort', order=None)

   
   
  • 1
  • 1
参数参数说明
a待排序数组array
axis=-1默认按最后一个轴进行排序,axis=0,按行进行排序,axis=1,按列进行排序,简单示意图如下
kind具体采用的排序方法,有{‘quicksort’, ‘mergesort’, ‘heapsort’}可供选择一般默认即可
order一个字符串或列表,可以按照某个属性进行排序,当a是一个定义了字段的数组时有用

在这里插入图片描述

具体示例:
在这里插入图片描述
关于order参数,创建如下结构数组:
在这里插入图片描述
按照指定属性进行排序:
在这里插入图片描述
在这里插入图片描述

2.np.argsort()

与sort基本一致,不过不是返回的排序完成后的元素数组,而是排序完成后相应元素对应的索引数组
在这里插入图片描述
元素2对应索引0,元素3对应索引3等等
在这里插入图片描述

3.np.partition()

要了解argpartition()方法最好先了解partition(),因为argpartition()只不过是在partition()的基础上返回排序完成数组的索引号罢了

partition(a, kth, axis=-1, kind='introselect', order=None)

 
 
  • 1
  • 1
参数参数说明
a待排序数组array
kth数组元素中从小到大的第k个值将在处于其最终排序位置k(下面例子具体说明)
axis=-1默认按最后一个轴进行排序
kind具体采用的排序方法,一般默认即可
order一个字符串或列表,可以按照某个属性进行排序,当a是一个定义了字段的数组时有用

具体例子

在这里插入图片描述
表示数组a中第2小的元素即元素2位于排序完成数组b第二个位置上,即索引b[1]处,然后小于该元素的位于该元素左边,大于该元素的位于右边,左右两边没有特别的排序要求,只要求左边小于该元素,右边大于该元素即可

在这里插入图片描述
表示数组a中第4小的元素即元素6位于排序完成数组b第四个位置上,即索引b[3]

在这里插入图片描述
kth也可以是负数
表示数组a中第2大的元素即元素8位于排序完成数组b倒数第2个位置上,即索引b[-2]
当然,这有个什么用啊?用处之一就是如果我们有一个非常大的数组,假如我们想要找到其中最大的10个数,怎么办呢,我们可以用sort函数,然后排序完成后取出来,但是数组太大时这一方法比较耗时,所以我们可以采用partition函数,partition只对数组进行一遍排序,找到k位置的数即可,而对k位置左右的排序不关心,工作量少意味着其效率快
假如我们想找到a中的最大3个元素,我们该怎么操作呢?
在这里插入图片描述
相应找到最小的3个元素也很简单:
在这里插入图片描述

4.argpartition()

与partition()类似,不过返回的不是分区排序好的元素数组,而是排序完成的元素索引数组
如:在这里插入图片描述
其中元素3对应索引4,元素4对应索引5,元素5对应索引1,等等

                                </div><div><div></div></div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
                            </div>
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/648868
推荐阅读
相关标签
  

闽ICP备14008679号