Menu
CoddyTech

布尔掩码

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 14 课,共 60 课。

哪些手机需要充电?将数组中的每个值与一个数字进行比较,每个值都会得到 True 或 False。这个结果叫作布尔掩码:

五个电池电量分别为 80、15、42、9 和 67。15 和 9 所在的单元格高亮显示,下方的掩码为 False、True、False、True、False

把掩码放在方括号中以保留 True 值,或者对它求和来计数:

levels = np.array([80, 15, 42, 9, 67])
low = levels < 20
print(levels[low])
print(low.sum())

这会打印:

[15  9]
2

True 计为 1,False 计为 0。匹配并计数,无需循环。

用 &(两者都满足)或 |(满足其一)组合掩码,并将每个比较表达式放在括号中:(levels > 30) & (levels < 70)。

challenge icon

挑战

简单

配送应用想要找出今天准时送达的订单:耗时在 low 到 high 分钟之间(包含两端)的配送。times 已准备好,程序会读取 low 和 high。打印:

  1. On time: 准时配送所用的时间,顺序与原来相同。
  2. On time count: 准时配送的数量。
  3. Outside count: 比 low 更快或比 high 更慢的配送数量。

对于 30 到 45 分钟的时间范围:

On time: [34 41 38 31 44]
On time count: 5
Outside count: 7

亲手试试

import numpy as np

times = np.array([18, 34, 25, 41, 22, 29, 15, 38, 27, 31, 44, 20])
low = int(input())
high = int(input())

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器