在python和numpy中
一、按位与(&):
元素类型为布尔值或者可以隐式转换为布尔值,
整数: 非0 视为True ; 0 视为False,
按照元素逐个进行逻辑与的规则.
元素与元素之间按照二进制进行按位与的规则
按位与的规则:
只有两个操作数都为True,结果为Ture,
只要两个操作数中有一个为False,结果为False
二、按位或(|)
整数: 非0 视为true ; 0 视为False,
按照元素逐个进行按位或的规则.
元素与元素之间按照二进制进行按位或的规则
按位或的规则:
只有当两个操作数都是False时结果是False
只要两个操作数中有一个为True,结果为True,
三、示例
import numpy as np
a = np.array([0, 0, 1, 0])
b = np.array([0, 1, 1, 0])
print(a & b)
print(a | b)
输出:[0 0 1 0]
[0 1 3 0]
按位或 (|) 运算:
a[0] | b[0]:0 | 0 → 0
a[1] | b[1]:0 | 1 → 1
a[2] | b[2]:1 | 3 → 0001 | 0011 → 0011 → 3 (二进制: 0001 与 0011 结果为 0011,即十进制 3)
a[3] | b[3]:0 | 0 → 0
按位与 (&) 运算:
a[0] & b[0]:0 & 0 → 0
a[1] & b[1]:0 & 1 → 0
a[2] & b[2]:1 & 3 → 0001 & 0011 → 0001 → 1
a[3] & b[3]:0 & 0 → 0
四、总结:
对于布尔值而非数值:非0可以替换为True,0可以替换为False。
&操作:当对应整数均非0时,会保留较小的非0整数
当对应整数有一个为0时,返回0。
|操作:当对应整数均为非0时,会保留较大的非0整数。
对应整数存在一个非0时会保留非0整数