点击上方 蓝字 关注我们
什么是布尔运算?
布尔运算是一种关系运算,包括以下几类:
对于布尔类型boolean,永远只有true和false两个值。
比较运算符:>,>=,<,<=,==,!=
与运算 &&
或运算 ||
非运算 !
什么是布尔掩码?
布尔掩码是基于规则来抽取,修改,计数或者对一个数组中的值进行其他操作,例如,统计数组中有多少大值于某一个值给定的值,或者删除某些超出门限的异常值。
01
引言:统计下雨天示例
假设你有一系列某城市一年内日降水量的数据,这份数据包含了2014年1月1日到2014年12月31每天的降水量,单位英寸。
import numpy as np
import pandas as pd
# use pandas to extract rainfall inches as a NumPy array
rainfall = pd.read_csv('data/Seattle2014.csv')['PRCP'].values
inches = rainfall / 254.0 # 1/10mm -> inches
inches.shape
# (365,)
我们用matplotlib可视化,生成下雨天数量的直方图。
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn; seaborn.set() # set plot styles
plt.hist(inches, 40);
但是这个直方图表明2014年在西雅图大多数时间降水量为0,这样并不能很好地传达信息,例如我们并不知道这些下雨天的一个平均降水量,有多少天的降水量超过一英寸?
计算上述问题呢,我们可以使用通用的传统计算方式实现,即对所有数据循环,当碰到数据落在我们希望的区间时计数器加1。这种方法从计算结果的角度看,不仅浪费时间而且效率极低。
如果我们使用Numpy的通用函数可以用来替代循环,以实现快速的数组的逐元素比较,同样地,我们也可以用掩码来解决这些问题。
02
布尔运算与基础函数的比较
布尔运算是一种关系运算,包括以下几类:
对于布尔类型boolean,永远只有true和false两个值。
比较运算符:>,>=,<,<=,==,!=
与运算 &&
或运算 ||
非运算 !
这些运算的结果是一个布尔数据类型的数组,一共有一下操作
x = np.array([1, 2, 3, 4, 5])
x < 3 # 小于
# array([ True, True, False, False, False], dtype=bool)
x > 3 # 大于
# array([False, False, False, True, True], dtype=bool)