numpy.invert
-
numpy.invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'invert'> -
Вычислить побитовое инвертирование (или побитовое НЕ) поэлементно.
Вычисляет побитовое НЕ от внутреннего двоичного представления целых чисел в входных массивах. Этот ufunc реализует оператор C/Python
~.Для входных данных со знаком целого типа возвращается дополнительный код к двум. В системе дополнительного кода к двум отрицательные числа представляются дополнительным кодом к двум абсолютного значения. Это наиболее распространённый метод представления целых чисел со знаком на компьютерах [1]. N-битная система дополнительного кода к двум может представлять каждое целое число в диапазоне от
до
.
Параметры: -
x : array_like -
Обрабатываются только целые и булевы типы.
-
out : ndarray, None, or tuple of ndarray and None, optional -
Расположение, в которое сохраняется результат. Если указано, оно должно иметь форму, к которой входные данные векторизуются. Если не указано или
None, возвращается свежевыделенный массив. Кортеж (возможен только в качестве ключевого аргумента) должен иметь длину, равную числу выходов. -
where : array_like, optional -
Это условие векторизуется по входу. В местах, где условие истинно, массив
outбудет устанавливаться в результат ufunc. В противном случае массивoutсохранит своё первоначальное значение. Обратите внимание, что если массивoutсоздаётся через значение по умолчаниюout=None, места в нём, где условие ложно, останутся неинициализированными. - **kwargs
-
Для других ключевых только аргументов см. документацию по ufunc.
Возвращает: -
out : ndarray or scalar -
Результат. Это скаляр, если
x— скаляр.
См. также
bitwise_and,bitwise_or,bitwise_xor,logical_not-
binary_repr - Возвращает двоичное представление входного числа в виде строки.
Примечания
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])
-
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.invert.html