Numpy bitwise_invert() 函数
NumPy bitwise_invert() 函数用于执行按位非运算,该运算会将输入数组中每个元素的所有位取反。
此函数将整数的二进制表示的每一位取反,从而得到按位取反的结果。
对于无符号整数,它实际上计算的是位宽减去当前值的最大值;对于有符号整数,它使用二进制的补码表示。
此函数可处理各种整数类型的输入,并返回一个形状和类型相同但位取反的数组。它等同于 bitwise_not()。
语法
以下是 Numpy bitwise_invert() 函数的语法 -
numpy.bitwise_invert(x)
参数
Numpy bitwise_invert() 函数接受一个参数,即 x,该参数接受要执行按位反转的输入数组或值。输入应为整数类型数组,例如 int8、int16、int32、int64、uint8、uint16、uint32、uint64 等 minus;
返回值
此函数返回对输入数组的每个元素应用了按位反转的数组。输出数组的形状和类型与输入数组相同。
示例 1
以下是 Numpy bitwise_invert() 函数的基本示例,它清晰地展示了如何对一个简单的整数数组进行按位反转操作 -
import numpy as np # 创建一个基本整数数组 x = np.array([0, 1, 2, 3], dtype=np.uint8) # 应用按位非运算 result = np.bitwise_invert(x) print(result)
以下是应用 bitwise_invert() 函数对数组执行操作后的输出 -
[255 254 253 252]
示例 2
在 NumPy 中处理不同数据类型的整数数组时,位运算(包括反转)的行为会根据所使用的整数类型而有所不同。以下是示例 -
import numpy as np # 定义不同数据类型的数组 array_uint8 = np.array([0, 1, 2, 255], dtype=np.uint8) array_uint16 = np.array([0, 1, 2, 65535], dtype=np.uint16) array_int8 = np.array([0, 1, -1, -2], dtype=np.int8) array_int16 = np.array([0, 1, -1, -2], dtype=np.int16) # 执行按位取反 result_uint8 = np.bitwise_invert(array_uint8) result_uint16 = np.bitwise_invert(array_uint16) result_int8 = np.bitwise_invert(array_int8) result_int16 = np.bitwise_invert(array_int16) print('原始 uint8 数组:', array_uint8) print('反转 uint8 数组:', result_uint8) print(' 原始 uint16 数组:', array_uint16) print('反转 uint16 数组:', result_uint16) print(' 原始 int8 数组:', array_int8) print('反转 int8 数组:', result_int8) print(' 原始 int16 数组:', array_int16) print('反转int16 数组:', result_int16)
以下是上述示例的输出 -
原始 uint8 数组:[ 0 1 2 255] 反转的 uint8 数组:[255 254 253 0] 原始 uint16 数组:[ 0 1 2 65535] 反转的 uint16 数组:[65535 65534 65533 0] 原始 int8 数组:[ 0 1 -1 -2] 反转的 int8 数组:[-1 -2 0 1] 原始 int16 数组:[ 0 1 -1 -2] 反转的 int16 数组:[-1 -2 0 1]
注意: 在一些版本 bitwise_invert() 函数将无法工作,在这种情况下我们可以使用 bitwise_not() 函数来执行相同的操作。