📅  最后修改于: 2023-12-03 14:46:44.380000             🧑  作者: Mango
在 Python 编程中,排序算法是一个非常基础也很重要的知识点。比如说,从一个列表中选取前 N 个最大或最小的元素,就需要使用排序算法。Python 中有很多排序相关的库,下面就来介绍一下其中的几个。
Python 自带的 sorted() 函数可以对列表、元组等可迭代对象进行排序。默认是升序排列。例如:
nums = [3, 5, 1, 2, 9, 6]
sorted_nums = sorted(nums)
print(sorted_nums)
输出:
[1, 2, 3, 5, 6, 9]
如果需要降序排列,可以使用 reverse=True
参数。例如:
nums = [3, 5, 1, 2, 9, 6]
sorted_nums = sorted(nums, reverse=True)
print(sorted_nums)
输出:
[9, 6, 5, 3, 2, 1]
Numpy 是 Python 中用于科学计算的库,它也提供了很多相关的排序函数。下面介绍其中的两个。
Numpy 中的 sort() 函数可以对数组(ndarray)进行排序。默认是升序排列。例如:
import numpy as np
nums = np.array([3, 5, 1, 2, 9, 6])
sorted_nums = np.sort(nums)
print(sorted_nums)
输出:
[1 2 3 5 6 9]
如果需要降序排列,可以使用 np.sort()
函数的 kind
参数。例如:
import numpy as np
nums = np.array([3, 5, 1, 2, 9, 6])
sorted_nums = np.sort(nums)[::-1]
print(sorted_nums)
输出:
[9 6 5 3 2 1]
Numpy 中的 argsort() 函数可以得到排序后数组的索引值。例如:
import numpy as np
nums = np.array([3, 5, 1, 2, 9, 6])
sorted_indices = np.argsort(nums)
print(sorted_indices)
输出:
[2 3 0 1 5 4]
可以看出,排序后,元素 1
的索引值为 2
,元素 5
的索引值为 3
,以此类推。
如果需要降序排列,可以调用 np.argsort()
函数得到升序索引,再用切片进行倒序。例如:
import numpy as np
nums = np.array([3, 5, 1, 2, 9, 6])
sorted_indices = np.argsort(nums)[::-1]
print(sorted_indices)
输出:
[4 5 1 0 3 2]
Pandas 是 Python 中用于数据分析的库,也提供了排序函数。下面介绍其中的一个。
Pandas 中的 sort_values() 函数可以对 DataFrame 进行排序。例如:
import pandas as pd
data = {
"name": ["Tom", "Bob", "Mary", "John"],
"age": [10, 20, 5, 30],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by=["age"])
print(sorted_df)
输出:
name age city
2 Mary 5 Guangzhou
0 Tom 10 Beijing
1 Bob 20 Shanghai
3 John 30 Shenzhen
可以看出,按照 age
列进行了升序排列。
如果需要降序排列,可以将 ascending
参数设置为 False
。例如:
import pandas as pd
data = {
"name": ["Tom", "Bob", "Mary", "John"],
"age": [10, 20, 5, 30],
"city": ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by=["age"], ascending=False)
print(sorted_df)
输出:
name age city
3 John 30 Shenzhen
1 Bob 20 Shanghai
0 Tom 10 Beijing
2 Mary 5 Guangzhou
以上介绍了 Python 中常用的几个排序库,通过这些库可以更方便地进行排序操作。