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
廣告