numpy.invert
- numpy.invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])=<ufunc 'invert'>
-
Вычислить побитовое инвертирование, или побитовое НЕ, поэлементно.
Вычисляет побитовое НЕ (NOT) двоичного представления целых чисел в массивах-входах. Эта функция ufunc реализует оператор C/Python
~.Для целочисленных входных данных со знаком возвращается дополнительный код. В системе дополнительного кода отрицательные числа представляются дополнительным кодом абсолютного значения. Это наиболее распространённый метод представления целых чисел со знаком на компьютерах [1]. N-разрядная система дополнительного кода может представлять любое целое число в диапазоне от \(-2^{N-1}\) до \(+2^{N-1}-1\).
- Параметры:
-
- xarray_like
-
Обрабатываются только целочисленные и булевы типы.
- outndarray, None, или кортеж ndarray и None, необязательно
-
Расположение, в котором хранится результат. Если предоставлено, оно должно иметь форму, до которой входные данные транслируются. Если не предоставлено или None, возвращается свежевыделенный массив. Кортеж (только в качестве ключевого аргумента) должен иметь длину, равную числу выходных данных.
- wherearray_like, необязательно
-
Это условие транслируется по вводу. В местах, где условие истинно, массив
outбудет установлен в результат ufunc. В противном случае массивoutсохранит своё исходное значение. Обратите внимание, что если пустой массивoutсоздаётся по умолчаниюout=None, места в нём, где условие ложно, останутся неинициализированными. - **kwargs
-
Для других ключевых аргументов см. документацию по функциям ufunc.
- Возвращает:
-
- outndarray или скаляр
-
Результат. Это скаляр, если
xявляется скаляром.
См. также
-
bitwise_and,bitwise_or,bitwise_xor logical_notbinary_repr-
Возвращает двоичное представление входного числа в виде строки.
Примечания
numpy.bitwise_notявляется псевдонимом дляinvert:>>> np.bitwise_not is np.invert True
Ссылки
[1]Википедия, “Дополнительный код”, https://en.wikipedia.org/wiki/Two’s_complement
Примеры
Мы видели, что 13 представляется
00001101. Побитовое инвертирование, или побитовое НЕ 13, тогда:>>> x = np.invert(np.array(13, dtype=np.uint8)) >>> x 242 >>> np.binary_repr(x, width=8) '11110010'
Результат зависит от разрядности:
>>> x = np.invert(np.array(13, dtype=np.uint16)) >>> x 65522 >>> np.binary_repr(x, width=16) '1111111111110010'
При использовании целочисленных типов со знаком результатом является дополнительный код результата для беззнакового типа:
>>> 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])
Оператор
~может использоваться как сокращённая запись дляnp.invertна массивах ndarrays.>>> x1 = np.array([True, False]) >>> ~x1 array([False, True])
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.invert.html