(&,|)和 (and,or) 是两组比较相似的运算符, 用在 "与"/ "或" 上, 在用法上有些许区别.
(&,|)和 (and,or) 是用来比较两组变量的, 格式基本上是:
- a & b
- a | b
- a and b
- a or b
如果 a,b 是数值变量, 则 &, | 表示位运算, and,or 则依据是否非 0 来决定输出,
&, |:
1&2,2 在二进制里面是 10,1 在二进制中是 01, 那么 01 与运算 10 得到是 0
- 1 & 2 # 输出为 0,
- 1 | 2 # 输出为 3
- and, or:
判断变量是否为 0, 是 0 则为 False, 非 0 判断为 True,
and 中含 0, 返回 0; 均为非 0 时, 返回后一个值,
- 2 and 0 # 返回 0
- 2 and 1 # 返回 1
- 1 and 2 # 返回 2
or 中, 至少有一个非 0 时, 返回第一个非 0,
- 2 or 0 # 返回 2
- 2 or 1 # 返回 2
- 0 or 1 # 返回 1
如何 a, b 是逻辑变量, 则两类的用法基本一致
- In[103]:(3>0) | (3<1)
- Out[103]: True
- In[104]:(3>0) and (3<1)
- Out[104]: False
- In[105]:(3>0) or (3<1)
- Out[105]: True
- In[106]:(3>0) & (3<1)
- Out[106]: False
值得提及的是在 DataFrame 的切片过程, 要注意逻辑变量的使用,
需要求得满足多个逻辑条件的数据时, 要使用 & 和 |, 在某些条件下用 and/ or 会报错'ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().'
- target_url = "http://aima.cs.berkeley.edu/data/iris.csv"
- data = pd.read_csv(target_url, header=None, columns=['s_line', 's_wid', 'p_line', 'p_wid', 'kind'])
- data.columns = ['s_line', 's_wid', 'p_line', 'p_wid', 'kind']
- x_data = data.iloc[:, :-1]
在多个逻辑条件下, 用 & 或者 |,
x_1 = x_data[x_data['s_line']> 6 & x_data['p_wid']> 0]
好了, 本文就给大伙分享到这里, 文末分享一波福利
获取方式: 加 python 群 839383765 即可获取!
来源: http://www.bubuko.com/infodetail-3057853.html