Spec-Zone.ru › NumPy 1.17

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-битная система дополнительного кода к двум может представлять каждое целое число в диапазоне от -2^{N-1} до +2^{N-1}-1.

Параметры:
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API