📂 目录

  • 位运算简介
  • 常用位运算符
  • 位运算在数组中的应用
  • 位运算与布尔数组
  • 出站链接
  • 参考资料

🎯 位运算简介

位运算(bitwise operations)是对整数的二进制位进行的运算。NumPy 提供了多个内建的位运算符,可以高效地对数组中的元素进行位级操作。这些位运算符通常用于处理二进制数据或执行诸如掩码操作等任务。

NumPy 中的位运算包括与(AND)、或(OR)、异或(XOR)、非(NOT)、左移、右移等操作,常用于数据处理、信号处理和图像处理等领域。


🧑‍🏫 常用位运算符

NumPy 提供了一些常见的位运算符,操作对象通常是整数数组。

  1. 与运算(AND) np.bitwise_and() np.bitwise_and() 用于对两个数组的对应元素进行按位与操作: a = np.array([0, 1, 2, 3], dtype=np.int32) b = np.array([1, 1, 0, 1], dtype=np.int32) print(np.bitwise_and(a, b)) # 输出:[0 1 0 1]
  2. 或运算(OR) np.bitwise_or() np.bitwise_or() 用于对两个数组的对应元素进行按位或操作: print(np.bitwise_or(a, b)) # 输出:[1 1 2 3]
  3. 异或运算(XOR) np.bitwise_xor() np.bitwise_xor() 用于对两个数组的对应元素进行按位异或操作: print(np.bitwise_xor(a, b)) # 输出:[1 0 2 2]
  4. 非运算(NOT) np.bitwise_not() np.bitwise_not() 用于对数组的每个元素执行按位非操作(取反): print(np.bitwise_not(a)) # 输出:[-1 -2 -3 -4](补码表示)
  5. 左移运算(Left Shift) np.left_shift() np.left_shift() 用于对数组元素进行按位左移操作: print(np.left_shift(a, 1)) # 输出:[0 2 4 6]
  6. 右移运算(Right Shift) np.right_shift() np.right_shift() 用于对数组元素进行按位右移操作: print(np.right_shift(a, 1)) # 输出:[0 0 1 1]

🧑‍🏫 位运算在数组中的应用

位运算符在数组上的使用与在标量上的使用类似,可以高效地对整个数组进行按位操作。例如,在处理图像数据时,位运算常用于图像的二值化、边缘检测等操作。

a = np.array([255, 128, 64, 32])
mask = np.array([1, 1, 0, 1])

# 使用按位与操作对数组进行掩码
result = np.bitwise_and(a, mask)
print(result)  # 输出:[1 0 0 0]


🔄 位运算与布尔数组

NumPy 位运算也可以与布尔数组结合使用。这是因为布尔值 TrueFalse 分别对应着 1 和 0,因此可以用位运算处理布尔数组。

a = np.array([True, False, True, False])
b = np.array([False, False, True, True])

# 按位与操作
print(np.bitwise_and(a, b))  # 输出:[False False  True False]

# 按位或操作
print(np.bitwise_or(a, b))  # 输出:[ True False  True  True]


🔗 出站链接


📚 参考资料

  • NumPy 官方文档
  • W3Schools Python NumPy 教程
  • GeeksForGeeks 深度讲解
  • 来自:www.52kanjuqing.com