美文网首页
python 随手记(3)常用的排序sort/sorted/ar

python 随手记(3)常用的排序sort/sorted/ar

作者: 银色尘埃010 | 来源:发表于2019-10-08 20:14 被阅读0次

    上次刚刚介绍了使用sorted对字典进行排序,本来不知道要继续些什么,前几天刚好就遇见错误的使用了sort和sorted导致的错误,就记录一下。

    一、sort() 和 sorted()

    主要区别:sort()是在原位重新排列列表,而sorted()是产生一个新的列表。

    图一 sort的函数介绍 图二 sorted的函数介绍

    看文档的说明就比较清晰了,接下来看看实际使用。

    nums1=[1,0,4,2,5,7,3]
    #使用sorted
    nums2 = sorted(nums1)
    print("nums2(使用sorted):",nums2)
    print("nums1:",nums1)
    
    # 输出
    >> nums2(使用sorted): [0, 1, 2, 3, 4, 5, 7]
       nums1: [1, 0, 4, 2, 5, 7, 3]
    
    #使用sort
    nums3 = nums1.sort()
    print("nums3:",nums3)
    print("nums1(使用sort):",nums1)
    
    #输出
    >>nums3: None
      nums1(使用sort): [0, 1, 2, 3, 4, 5, 7]
    

    (1)从文档或者代码中可以看到他们的使用方法是不一样的:sorted(nums1)与nums1.sort()两者不同。
    (2)注意以下nums3,文档中也说了,sort没有返回值,因为在原本的地址空间中排序。

    对于sort和sorted,他们都有参数key, inverse, cmp等,具体的使用可以看一下使用sorted对dict按照key或value进行排序

    二、argsort()
    为什么要将这个排序呢,因为在使用pandas做数据分析的时候见过。


    图三 argsort文档

    这个函数返回的是排序完之后的下表的索引
    代码

    nums1=np.array([1,0,4,2,5,7,3])
    index = np.argsort(nums1)
    print(index)
    
    #返回值
    >> [1 0 3 6 2 4 5]
    # 返回索引,index[0]=1,说明列表nums1中的最小元素的索引是为1,即为nums1[1] = 0
    # index[1]=0,说明列表nums1中的第二小元素的索引是为0,即为nums1[0] = 1
    # ...
    # index[6]=5,说明列表nums1中的最大元素的索引是为5,即为nums1[5] = 7
    

    那么获得了索引有什么用呢,你就可以通过索引获得排序好的数据。

    print(nums1[[index]])
    # 带入索引,返回排序好的数列
    >> [0 1 2 3 4 5 7]
    

    看这个例子可能觉得,这不是吃饱了没事干吗,再看一个例子(《利用python进行数据分析中的一个例子》):

    数据arg_counts
    sum求和,argsort()
    通过indexer进行排序

    我的任务是对arg_counts进行排序,但是是按照 windows 和 not windows的和进行排序,当然可以再加一列,然后排序。不过这里就是用了argsort获取排序后的索引。

    相关文章

      网友评论

          本文标题:python 随手记(3)常用的排序sort/sorted/ar

          本文链接:https://www.haomeiwen.com/subject/pjripctx.html