zoukankan      html  css  js  c++  java
  • numpy排序(sort、argsort、lexsort、partition、sorted)

    1.sort

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

    • a :所需排序的数组
    • axis:数组排序时的基准,axis=0按行排列;axis=1按列排列
    • kind:数组排序时使用的方法,其中:
    • kind=′quicksort′为快排;kind=′mergesort′为混排;kind=′heapsort′为堆排;
    • order:一个字符串或列表,可以设置按照某个属性进行排序

    2.argsort

    numpy.argsort(a, axis=1, kind='quicksort', order=None)

    • a :所需排序的数组
    • axis:数组排序时的基准,axis=0按行排列;axis=1按列排列
    • kind:数组排序时使用的方法,其中:
    • kind=′quicksort′为快排;kind=′mergesort′为混排;kind=′heapsort′为堆排;
    • order:一个字符串或列表,可以设置按照某个属性进行排序

    3.lexsort 排字典序函数

    numpy.argsort(a, axis=-1, kind='quicksort', order=None)

    b在前,a在后,即是先按照a的元素进行比较
    如a中的最小值为两个1,其索引分别为0,2,再计较b中相应索引上的值,即9,0
    对应的最小应是:1,0,而其对应的索引为2,所以排序后返回的结果第一个值为索引2
    下一个最小应是:1,9,而其对应的索引为0,所以排序后返回的结果第一个值为索引0
    以此类推...

    下例lexsort以最后一行开始,首先对a进行排序,可以发现a中有几个元素是相同的,有着相同元素的按照索引小的在前,
    因此a排序后的索引数组为[ 0, 2, 4, 3, 5, 6, 1 ]。然后我们对b进行排序,排序结果为[ 2, 4, 6, 5, 3, 1, 0 ],
    最后的排序结果为[ 2, 0, 4, 6, 5, 3, 1 ],我们知道a中索引0和2数值相等,但是在b中索引为2的元素比索引为0的元素小,
    所以最终的比较结果为第二列比第0列小,其他列同理。其实上面相当于是对 19,54,10,44,30,42,41进行排序,
    带下划线的元素是主关键字,主关键字来自a(最后一行),当主关键字比较不出结果,则参考次关键字(b对应行)的比较结果得出最后的排序结果
    另外对有序数组中,我们可以用searchsorted找到某个元素合适的位置。这里不一定会找到查找成功,
    但是如果待查找元素存在则一定在那个的位置上。因此searchsorted方法可以轻松找到某一个区间的临界点的索引。
    (注意如果元素存在且不止一个,则默认返回最左边的索引)

    4.numpy.searchsorted

    • numpy.searchsorted(a, v, side='left', sorter=None)
    • a:所需排序的数组
    • v:待查询索引的元素值
    • side:查询索引时的方向,其中:kind=′left′为从左至右;kind=′right′为从右至左
    • sorder:一个字符串或列表,可以设置按照某个属性进行排序

    5.numpy.partition(与此对应的还有argpartition)

     

    6.sorted()

  • 相关阅读:
    Using Subversion and ViewCVS on Solaris 10
    Solaris开放源代码了!
    小笨霖英语笔记本(0)
    How to start CDE/JDS with xinit command
    英译汉练习:Solaris 10进入Linux领地
    UNIX/LINUX 平台可执行文件格式分析
    小笨霖英语笔记本(2)
    小笨霖英语笔记本(3)
    小笨霖英语笔记本(1)
    魔鬼城雅丹地貌
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/10044548.html
Copyright © 2011-2022 走看看