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_not
是invert
的別名>>> 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])