📜  python库自动排序——Python(1)

📅  最后修改于: 2023-12-03 14:46:44.380000             🧑  作者: Mango

Python库自动排序

在 Python 编程中,排序算法是一个非常基础也很重要的知识点。比如说,从一个列表中选取前 N 个最大或最小的元素,就需要使用排序算法。Python 中有很多排序相关的库,下面就来介绍一下其中的几个。

1. 内置函数sorted()

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]
2. Numpy库的排序

Numpy 是 Python 中用于科学计算的库,它也提供了很多相关的排序函数。下面介绍其中的两个。

2.1. numpy.sort()

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]
2.2. numpy.argsort()

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]
3. Pandas库的排序

Pandas 是 Python 中用于数据分析的库,也提供了排序函数。下面介绍其中的一个。

3.1. pandas.DataFrame.sort_values()

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 中常用的几个排序库,通过这些库可以更方便地进行排序操作。