numpy.bitwise_invert#

numpy.bitwise_invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature]) = <ufunc 'invert'>#

計算逐位元反轉,或逐位元 NOT,以元素方式。

計算輸入陣列中整數的底層二進位表示的逐位元 NOT。此 ufunc 實作 C/Python 運算子 ~

對於帶號整數輸入,會傳回絕對值的逐位元 NOT。在二補數系統中,此運算有效地翻轉所有位元,產生對應於輸入的負數加一的表示。這是電腦上表示帶號整數最常見的方法 [1]。一個 N 位元二補數系統可以表示範圍在 \(-2^{N-1}\)\(+2^{N-1}-1\) 之間的每個整數。

參數:
xarray_like

僅處理整數和布林型別。

outndarray、None 或 ndarray 和 None 的 tuple,選用

結果儲存的位置。如果提供,則其形狀必須與輸入廣播到的形狀相同。如果未提供或為 None,則會傳回新配置的陣列。tuple(僅可作為關鍵字引數)的長度必須等於輸出的數量。

wherearray_like,選用

此條件會廣播到輸入。在條件為 True 的位置,out 陣列將設定為 ufunc 結果。在其他位置,out 陣列將保留其原始值。請注意,如果透過預設 out=None 建立未初始化的 out 陣列,則條件為 False 的位置在陣列中將保持未初始化狀態。

**kwargs

對於其他僅限關鍵字引數,請參閱 ufunc 文件

傳回:
outndarray 或 純量

結果。如果 x 是純量,則這會是純量。

另請參閱

bitwise_andbitwise_orbitwise_xor
logical_not
binary_repr

以字串形式傳回輸入數字的二進位表示。

註解

numpy.bitwise_notinvert 的別名

>>> np.bitwise_not is np.invert
True

參考文獻

[1]

維基百科,「二補數」,https://en.wikipedia.org/wiki/Two’s_complement

範例

>>> import numpy as np

我們已經看到 13 以 00001101 表示。然後 13 的反轉或逐位元 NOT 為

>>> x = np.invert(np.array(13, dtype=np.uint8))
>>> x
np.uint8(242)
>>> np.binary_repr(x, width=8)
'11110010'

結果取決於位元寬度

>>> x = np.invert(np.array(13, dtype=np.uint16))
>>> x
np.uint16(65522)
>>> np.binary_repr(x, width=16)
'1111111111110010'

當使用帶號整數型別時,結果是無號型別的逐位元 NOT,解譯為帶號整數

>>> np.invert(np.array([13], dtype=np.int8))
array([-14], dtype=int8)
>>> np.binary_repr(-14, width=8)
'11110010'

布林值也接受

>>> np.invert(np.array([True, False]))
array([False,  True])

運算子 ~ 可以用作 ndarray 上 np.invert 的簡寫。

>>> x1 = np.array([True, False])
>>> ~x1
array([False,  True])