mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7mobile wallpaper 8mobile wallpaper 9mobile wallpaper 10mobile wallpaper 11mobile wallpaper 12mobile wallpaper 13mobile wallpaper 14mobile wallpaper 15mobile wallpaper 16mobile wallpaper 17mobile wallpaper 18mobile wallpaper 19mobile wallpaper 20mobile wallpaper 21mobile wallpaper 22mobile wallpaper 23
945 字
2 分钟
笔记|数据分析学习笔记10|比较函数

本系列所有文章都放在数据科学标签,总目录如下:

合集|数据分析学习笔记|系列总目录

上一篇:笔记|数据分析学习笔记09|统计函数


10.1 比较函数概述#

数据分析中经常需要根据条件筛选数据,NumPy 提供了一系列比较函数来实现逐元素的条件判断。下表列出了本节涉及的比较函数:

函数功能
np.greater(a, b)逐元素判断 a 是否大于 b
np.less(a, b)逐元素判断 a 是否小于 b
np.equal(a, b)逐元素判断 a 是否等于 b
np.logical_and(a, b)逐元素逻辑与运算
np.logical_or(a, b)逐元素逻辑或运算
np.logical_not(a)逐元素逻辑非运算
np.any(a)检查数组中是否至少有一个 True
np.all(a)检查数组中是否全部元素为 True
np.where(condition, x, y)根据条件选择元素
np.select(condlist, choicelist)多条件选择元素

10.2 大于、小于、等于#

这三个函数用于逐元素比较两个数组(或数组与标量)的大小关系,返回布尔数组。

import numpy as np
# 是否大于
print(np.greater([3, 4, 5, 6, 7], 4))
# 是否小于
print(np.less([3, 4, 5, 6, 7, 8], 4))
# 是否等于
print(np.equal([3, 4, 5, 6, 7, 8], 4))
print(np.equal([3, 4, 5], [4, 4, 4]))

输出:

[False False True True True]
[ True False False False False False]
[False True False False False False]
[False True False]

要点说明:

  • 当第二个参数是标量时,每个元素与该标量比较,等价于使用 ><== 运算符。
  • 当两个数组长度相同时,逐位置一一对应比较。
  • 返回值是一个布尔数组,常配合布尔索引使用(参见第6节)。

10.3 逻辑运算#

np.logical_and()np.logical_or()np.logical_not() 用于对布尔数组进行逐元素的逻辑运算。

print(np.logical_and([1, 0], [1, 1])) # 逻辑与
print(np.logical_not([1, 0])) # 逻辑非
print(np.logical_or([0, 0], [1, 0])) # 逻辑或

输出:

[ True False]
[False True]
[ True False]

要点说明:

  • np.logical_and():两个输入都为真时返回 True
  • np.logical_or():至少一个输入为真时返回 True
  • np.logical_not():对布尔值取反。
  • 在布尔索引中组合多个条件时,使用 &(与)、|(或)运算符(参见第6节)。

10.4 any 与 all#

np.any() 检查数组中是否至少有一个 Truenp.all() 检查数组中是否全部True

# 检查是否至少有一个元素为 True
print(np.any([0, 1, 0, 0, 0]))
print(np.any([0, 0, 0, 0, 0]))
# 检查是否全部元素为 True
print(np.all([1, 1]))
print(np.all([1, 0]))

输出:

True
False
True
False

这两个函数常用于数据验证场景,例如检查数据集中是否存在缺失值、所有样本是否满足某个条件等。


10.5 np.where()#

np.where(condition, x, y) 是条件筛选的核心函数。当 conditionTrue 时取 x 对应的值,否则取 y 对应的值。

arr = np.array([1, 2, 3, 4, 5])
print(np.where(arr > 3, arr, 0)) # 大于3的保留原值,否则置0
print(np.where(arr < 3, 1, 0)) # 小于3的置1,否则置0

输出:

[0 0 0 4 5]
[1 1 0 0 0]

实际应用:成绩等级评定

score = np.random.randint(50, 100, 20)
print(score)
print(np.where(score >= 60, '及格', '不及格'))

输出(结果随机):

[53 89 59 69 71 86 73 56 74 74 62 51 88 89 73 96 74 67 87 75]
['不及格' '及格' '不及格' '及格' '及格' '及格' '及格' '不及格' '及格' '及格' '及格' '不及格' '及格' '及格'
'及格' '及格' '及格' '及格' '及格' '及格']

嵌套 np.where() 实现多级判定:

print(np.where(
score < 60, '不及格', np.where(
score < 80, '良好', '优秀'
)
))

输出(结果随机):

['不及格' '优秀' '不及格' '良好' '良好' '优秀' '良好' '不及格' '良好' '良好' '良好' '不及格' '优秀' '优秀'
'良好' '优秀' '良好' '良好' '优秀' '良好']

通过嵌套 np.where(),可以实现”不及格 / 良好 / 优秀”三级分类。逻辑是:先判断是否小于 60,若是则”不及格”;否则再判断是否小于 80,若是则”良好”,否则”优秀”。


10.6 np.select()#

当条件分支较多时,嵌套 np.where() 可读性较差。np.select(condlist, choicelist) 提供更清晰的多条件选择方式。

print(np.select(
[score > 80, (score >= 60) & (score <= 80), score < 60],
['优秀', '良好', '不及格'],
default='未知'
))

输出(结果随机):

['不及格' '优秀' '不及格' '良好' '良好' '优秀' '良好' '不及格' '良好' '良好' '良好' '不及格' '优秀' '优秀'
'良好' '优秀' '良好' '良好' '优秀' '良好']

要点说明:

  • condlist:条件列表,按顺序逐一判断,命中的第一个条件对应的值被选中。
  • choicelist:返回值列表,与条件列表一一对应。
  • default:当所有条件都不满足时的兜底值。
  • 条件按顺序匹配(类似 if-elif-else),排在前面的条件优先级更高。

10.7 本节小结#

本节完成了以下内容:

  • 掌握了 np.greater()np.less()np.equal() 逐元素比较函数。
  • 掌握了 np.logical_and()np.logical_or()np.logical_not() 逻辑运算。
  • 掌握了 np.any()np.all() 的数组整体真值判断。
  • 掌握了 np.where() 条件筛选与嵌套多级判定。
  • 掌握了 np.select() 多条件选择及其 default 参数。

下一节我们将学习 NumPy 中的排序函数,包括排序、去重、数组拼接与分割。

下一篇:笔记|数据分析学习笔记11|排序函数


分享

如果这篇文章对你有帮助,欢迎分享给更多人!

笔记|数据分析学习笔记10|比较函数
https://luq-blog.xyz/posts/2026-07-02-data-notes-10-comparison/
作者
Luquiescene
发布于
2026-07-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录