721 字
4 分钟
页面浏览--访问次数--
数据分析|排序函数

11.1 排序函数概述#

在数据分析中,排序和去重是数据预处理的基本操作。NumPy 提供了高效的排序函数,下表列出了本节涉及的主要函数:

函数功能
np.sort(x)返回排序后的新数组(原数组不变)
x.sort()原地排序,直接修改原数组
np.argsort(x)返回排序后各元素在原数组中的索引
np.lexsort(keys)根据多个键进行间接排序
np.unique(x)返回去重并排序后的唯一值
np.in1d(a, b)检查 a 中的元素是否存在于 b 中

11.2 np.sort() 与 arr.sort()#

np.sort() 返回排序后的新数组,原数组保持不变;arr.sort() 是数组的方法,会原地修改原数组。

import numpy as np
np.random.seed(0)
arr = np.random.randint(1, 100, 20)
print(arr)

输出:

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
# np.sort() 返回新数组,原数组不变
print(np.sort(arr))
print(arr) # 原数组不变

输出:

[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]
[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
# arr.sort() 原地排序,修改原数组
arr.sort()
print(arr) # 原数组已被修改

输出:

[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]

选择建议:

  • 需要保留原始数据顺序时,使用 np.sort()。
  • 不需要保留原始数据且希望节省内存时,使用 arr.sort()。

11.3 np.argsort()#

np.argsort() 不返回排序后的值,而是返回排序后各元素在原数组中的索引位置。这在需要按一个数组的顺序排列另一个数组时非常有用。

np.random.seed(0)
arr = np.random.randint(1, 100, 20)
print(arr)
print(np.argsort(arr))

输出:

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
[ 5 13 7 8 16 0 18 1 14 2 15 3 4 10 6 17 9 11 12 19]

结果解读:

  • argsort 返回值的第一个元素是 5,表示排序后最小的元素(10)在原数组的索引 5 位置。
  • 验证:arr[5] = 10,确实是最小值。
  • arr[argsort] 等价于 np.sort(arr)。

11.4 np.unique() 去重#

np.unique() 返回数组中去重并排序后的唯一值。

np.random.seed(0)
arr = np.random.randint(1, 100, 20)
print(arr)
print(np.unique(arr))

输出:

[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
[10 13 22 37 40 45 47 48 59 65 66 68 71 84 88 89]

原始数组有 20 个元素,去重后剩下 16 个唯一值,且默认按升序排列。在数据分析中,np.unique() 常用于统计类别、去除重复样本等场景。


11.5 本节小结#

本节完成了以下内容:

  • 掌握了 np.sort()(返回新数组)与 arr.sort()(原地排序)的区别与适用场景。
  • 掌握了 np.argsort() 返回排序索引的用法及其解读方式。
  • 掌握了 np.unique() 去重并排序的功能。

下一节我们将对 NumPy 章节进行整体回顾与小结,梳理本章的核心知识点。


数据分析

连载中

第 11 篇,共 21 篇本文属于系列

数据分析|排序函数
https://luq-blog.xyz/posts/2026-07-02-data-notes-11-sort/
作者
Luquiescene
发布于
2026-07-02
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...

最后更新于 ,距今已过 94 天

部分内容可能已过时