Python数组排序方法之sort、sorted和argsort详解
排序概述
排序是将一组无序或者部分有序的数据按照一定的规则进行重新排列,使其成为有序的数据序列,便于查找、统计等操作。在Python中,对列表、元组和一维数组进行排序操作比较常见。
排序方法
Python提供了多种排序方法,主要包括sort、sorted和argsort三种。下面我们分别进行介绍。
sort方法
sort方法是应用在列表对象上的方法,用于对原列表进行排序,从小到大排序。具体用法如下:
l = [3, 1, 4, 1, 5, 9, 2, 6, 5]
l.sort()
print(l)
输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
其中,sort方法可接受的参数包括:
- cmp:用于指定比较的函数,可以自定义。
- key:用于指定排序的关键字,按照关键字进行排序。
- reverse:用于指定排序规则,True为降序,False为升序,默认为False。
sorted方法
sorted方法与sort方法类似,只是sorted方法是内置函数,不是列表对象的方法。它接受可迭代对象作为参数,返回排序后的新列表(不改变原列表),可以实现从小到大排序和从大到小排序。具体用法如下:
l = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_list = sorted(l)
print(sorted_list)
输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
其中,sorted方法可接受的参数包括:
- iterable:用于指定要排序的可迭代对象。
- key:用于指定排序的关键字,按照关键字进行排序。
- reverse:用于指定排序规则,True为降序,False为升序,默认为False。
argsort方法
argsort是用于对一维数组进行排序,并返回排序后的数组下标。具体用法如下:
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5])
index = np.argsort(arr)
print(index)
输出结果为:[1 3 6 0 2 4 8 7 5]
其中,argsort方法可接受的参数包括:
- axis:用于对多维数组按照指定轴进行排序,默认为-1。
- kind:用于指定排序算法的种类,可以选择快速排序('quicksort')、堆排序('heapsort')或归并排序('mergesort'),默认为快速排序。
示例说明
示例一:对含有重复元素的列表进行排序
下面演示如何对一个含有重复元素的列表进行排序,我们使用sort和sorted分别进行演示:
l = [3, 1, 4, 1, 5, 9, 2, 6, 5]
l.sort()
print(l) # 输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
sorted_list = sorted(l)
print(sorted_list) # 输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
可以看出,sort和sorted方法都可以对含有重复元素的列表进行排序,从小到大排序。
示例二:对一维数组按照指定轴进行排序
下面演示如何对一个一维数组按照指定轴进行排序,我们使用argsort进行演示:
import numpy as np
arr = np.array([[1, 4, 3], [6, 2, 7], [5, 8, 9]])
index = np.argsort(arr, axis=0)
print(index)
输出结果为:[[0 1 0] [2 0 1] [1 2 2]]
可以看出,argsort方法成功对一维数组按照指定轴进行排序,并返回了排序后的数组下标。
总结
排序是程序员在日常工作中经常遇到的问题,Python提供了多种排序方法,包括sort、sorted和argsort三种。在应用这些排序方法的时候,需要注意的是各个方法的具体用法和可接受的参数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数组排序方法之sort、sorted和argsort详解 - Python技术站