numpy.invert#

numpy.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_and, bitwise_or, bitwise_xor
logical_not
binary_repr

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

註解

numpy.bitwise_notinvert 的別名

>>> np.bitwise_not is np.invert
True

參考文獻

[1]

Wikipedia, “Two’s complement”, 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])