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-разрядная система дополнительного кода может представлять каждое целое число в диапазоне от
до
.
- Параметры
-
-
xarray_like -
Обрабатываются только целочисленные и логические типы.
-
outndarray, None, or tuple of ndarray and None, optional -
Местоположение, в которое сохраняется результат. Если предоставлено, оно должно иметь форму, к которой векторизуются входные данные. Если не предоставлено или None, возвращается только что выделенный массив. Кортеж (возможен только в качестве ключевого аргумента) должен иметь длину, равную количеству выходов.
-
wherearray_like, optional -
Это условие векторизуется по входным данным. В местах, где условие True, массив
outбудет установлен на результат ufunc. В противном случае массивoutсохранит свое исходное значение. Обратите внимание, что если массивoutсоздается через значение по умолчаниюout=None, места в нём, где условие False, останутся неинициализированными. - **kwargs
-
Для других ключевых аргументов см. документацию по ufunc.
-
- Возвращает
-
-
outndarray 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])
Оператор
~может использоваться как сокращенная запись дляnp.invertна nd-массивах.>>> x1 = np.array([True, False]) >>> ~x1 array([False, True])
© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.invert.html