100天搞定机器学习(100-Days-Of-ML)(十)Numpy数组布尔掩码和花哨的索引

本文介绍了Numpy中布尔掩码和花哨索引的概念及其在机器学习中的作用。布尔掩码用于根据特定条件筛选数组元素,如统计大于特定值的元素数量,而花哨索引则允许通过索引数组获取和修改复杂数据子集。通过结合布尔操作、掩码和聚合,可以高效地处理数据集的子集。

第十天

Numpy数组布尔掩码和花哨的索引

当你想基于默写准则来抽取、修改、计数或对一个数组中的值进行其他操作时,掩码就可以派上用场了。例如你可能希望统计数组中有多少值大于某一个给定值,或者删除所有超出某些阈值的异常点。在Numpy中,布尔掩码通常是完成这类任务的最高效方式。

一、操作布尔数组

通用函数中,我们看到+,-,*,/等一些运算符实现了数组的逐元素操作。Numpy还实现了<(小于)和>(大于)的逐元素比较的通用函数。这些比较运算的结果是一个布尔数据类型的数组。

x = np.array([1, 2, 3, 4, 5, 6])
x < 3 # 小于
# [True, True, False, False, False, False]

给定一个布尔数组,可以实现很多有用的操作。

生成一个二维数组x
x = np.random.randint(10, size=(3, 4))
print(x)

1.统计记录的个数

# 有多少值小于6
np.count_nonzero(x < 6)
# 或者使用sum
np.sum(x < 6)
-----------------------
sum的好处是和其他Numpy聚合函数一样,这个求和也可以沿着行或列进行
# 每行有多少值小于6
np.sum(x < 6, axis=1)
# array([3, 3, 3])
-----------------------
如果想要快速检查或所有这些值是否为True,可以使用np.any和np.all
# 有没有大于6的
np.any(x > 8)
# 是否所有值都小于10
np.all(x < 10)
​

2.布尔运算符

Python里面的逐位逻辑运算符有&、|、^、和~来实现。同标准运算符一样,Numpy用通用函数重载了这些逻辑运算符,这样就可以实现数组的逐位运算。

# 统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值