NumPy 按位取反() 函数



NumPy 的bitwise_invert()函数用于执行按位非运算,该运算会反转输入数组中每个元素的所有位。

此函数会翻转整数二进制表示中的每一位,从而得到按位补码。

对于无符号整数,它实际上计算的是位宽的最大值减去当前值,而对于有符号整数,它使用二进制补码表示。

此函数处理各种整数类型的输入,并返回一个具有相同形状和类型的数组,其中包含反转的位。它等效于bitwise_not()

语法

以下是 NumPy bitwise_invert() 函数的语法:

numpy.bitwise_invert(x)

参数

NumPy bitwise_invert() 函数接受一个参数,即x,它接受要执行按位反转的输入数组或值。输入应为整数类型数组,例如 int8、int16、int32、int64、uint8、uint16、uint32、uint64 等;

返回值

此函数返回一个数组,其中对输入数组的每个元素应用了按位反转。输出数组与输入数组具有相同的形状和类型。

示例 1

以下是 NumPy bitwise_invert() 函数的基本示例,它清晰地展示了按位反转如何在简单的整数数组上操作:

import numpy as np

# Create a basic integer array
x = np.array([0, 1, 2, 3], dtype=np.uint8)

# Apply bitwise NOT operation
result = np.bitwise_invert(x)
print(result)   

以下是将bitwise_invert() 函数应用于数组后的输出:

[255 254 253 252]

示例 2

在使用 NumPy 中不同数据类型的整数数组时,按位运算(包括反转)的行为可能会因使用的整数类型而异。这是一个例子:

import numpy as np

# Define arrays with different data types
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)

# Perform bitwise inversion
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('Original uint8 array:', array_uint8)
print('Inverted uint8 array:', result_uint8)
print('\nOriginal uint16 array:', array_uint16)
print('Inverted uint16 array:', result_uint16)
print('\nOriginal int8 array:', array_int8)
print('Inverted int8 array:', result_int8)
print('\nOriginal int16 array:', array_int16)
print('Inverted int16 array:', result_int16)

以下是上述示例的输出:

Original uint8 array: [  0   1   2 255]
Inverted uint8 array: [255 254 253   0]

Original uint16 array: [    0     1     2 65535]
Inverted uint16 array: [65535 65534 65533     0]

Original int8 array: [ 0  1 -1 -2]
Inverted int8 array: [-1 -2  0  1]

Original int16 array: [ 0  1 -1 -2]
Inverted int16 array: [-1 -2  0  1]

注意:在某些版本中,bitwise_invert() 函数不起作用,在这种情况下,可以使用bitwise_not() 函数执行相同的操作。

numpy_binary_operators.htm
广告
© . All rights reserved.