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

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

  • 1.np.sort()
  • 2.np.argsort()
  • 3.np.partition()
  • 4.argpartition()
  • .np.sort()

    np.sort(a, axis=-1, kind='quicksort', order=None)
    
  • 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
  • 参数参数说明
    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,等等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值