「Python数据科学」ndarray的逻辑运算与更机动的数据筛选
-
序论
ndarray的向量化的特色,对逻辑运算亦然适用的。然则,对于多维数组的逻辑运算不至于得到一个布尔数组的效果,还不错基于布尔索引与逻辑运算相联接,杀青愈加机动的数据筛选。
本文的主要本体有:
1、ndarray的相比运算
2、逻辑运算符的使用
3、三元运算函数where
4、通用判断函数any和all
ndarray的相比运算
其实对于多维数组ndarray的相比运算,在前边的本体中,一经有所波及。其实,更常用的相比运算,是将数组与某个标量进行相比,诈欺向量化的特色,将相比运算应用到数组中的每一个元素,从而不错得到一个布尔数组。更进一步,ndarray维持使用布尔数组进行索引,是以,不错杀青对数组进行知足特定的条目的元素的筛选需求。
径直看对应的代码:
逻辑运算符的使用
除了单个条目进行数组元素的筛选以外,NumPy还提供了逻辑运算符,从而杀青条目的组合,杀青愈加复杂的数据筛选需求。
所有有如下逻辑运算符:
1、np.logical_and()
用于两个条目况兼的关联,数组元素筛选语境中,暗意求两个相接杂乱的操作。也即是取得同期知足两个条目的数据。
不错使用运算符 & 进行简化,两者是等价的。
2、np.logical_or()
用于两个条目或的关联,数组元素筛选语境中,暗意求两个相接并集的操作。也即是取得知足至少纵容一个条目的数据。
不错使用运算符 | 进行简化,两者是等价的。
3、np.logical_not()
用于取反的逻辑运算,暗意取得不知足该条目的数据元素。然则,时常来说,咱们会自行进行条目的取反操作,而不是通过np.logical_not()来进行取反。
不错使用运算符 ~ 进行简化,两者是等价的。
4、np.logical_xor()
逻辑异或的倡导,也即是取得两个条目不同期为真、也不同期为假的数据。
不错简化为操作符 ^,两者是等价的。
底下通过代码进行例如诠释:
三元运算函数where
由于逻辑运算复返的效果是布尔数组,未必不是太便捷。是以,NumPy还提供了np.where()函数,不错阐发条目复返元素的索引或阐发条目生成新的数组。
通过代码演示下np.where()函数的使用:
通用判断函数any和all
NumPy中提供的逻辑运算,除了上头的本体外,还有效于杀青通盘元素齐为真,或者至少有一个元素为真,这两种场景的数据筛选需求。
相比通俗,径直通过代码进行例如诠释:
回来
本文通俗先容了NumPy维持的相比常用的逻辑运算,包括相比运算、逻辑运算符、三元运算,以及any和all的语义。基于这些操作的组合,就不错杀青相比机动的数组元素的筛选了。固然,NumPy中还提供了更多的、更复杂的逻辑运算操作。然则,更复杂的本体,其实,咱们不错借助Pandas愈加大概的杀青。是以,这里就不再张开了。
以上,即是本文的一齐本体,感谢您的拨冗阅读!