我是靠谱客的博主 无聊大门,这篇文章主要介绍关于pandas或numpy中 bool 类型运算,现在分享给大家,希望可以做个参考。

关于pandas或numpy中 bool 类型运算

            • or 和 and 运算
            • 异或运算
            • 取反

or 和 and 运算

pandas 或 numpy 中,bool类别,or 和 and 操作和常规操作是一样(需使用操作符 | 和 &,否则报错)

import pandas as pd
import numpy as np
a = np.array([True, True, False, False, False])
b = np.array([True, False,True, True, False])
print(a | b)
#[ True
True
True
True False]
print(a & b)
#[ True False False False False]
异或运算

异或运算在 numpy 或 pandas 下操作都是有效的;

xor_in = a ^ b
print(xor_in)
#[False
True
True
True False]

异或在需求上,可用于获取只存在于 a 或 b 其一数据中的数据

only_a_in = xor_in & a
#只存在于 a
only_b_in = xor_in & b
#只存在于 b
取反

在 numpy 或 pandas 下都可以使用 np.bitwise_* 函数,且返回的结果不改变原有结果

any_in = a | b
not_in = np.bitwise_not(any_in)
print(not_in)
#[False False False False
True]
print(np.bitwise_not(pd.DataFrame(any_in)))
#
0
# 0
False
# 1
False
# 2
False
# 3
False
# 4
True

因此 pandas 的 DataFrame 和 Series 格式下的 bool 类型取反,均可直接使用 np.bitwise_not 函数,且不改变其格式;
对于 & 、| 和 ^ 都是可以使用 np.bitwise_and 、np.bitwise_or 和 np.bitwise_xor 替换相对应的操作符,对于速度来说,操作符显然是更快,但对于 bool 取反,则只能使用 np.bitwise_not ;

注意:在一些操作系统中,np.bitwise_xor(a, b) 可能会修改 b 的元素,曾在公司的mac上遇到此问题,但个人电脑上未发现此问题,因此使用该函数做 异或 需多加检查;

最后

以上就是无聊大门最近收集整理的关于关于pandas或numpy中 bool 类型运算的全部内容,更多相关关于pandas或numpy中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(271)

评论列表共有 0 条评论

立即
投稿
返回
顶部