Python:Numpy库中的invert()函数的用法

2021-01-05 10:26:24 浏览数 (1)

参考链接: Python中的numpy.absolute

Numpy库中的invert()函数的用法 

官方解释: 

 Compute bit-wise inversion, or bit-wise NOT, element-wise. Computes the bit-wise NOT of the underlying binary representation of the integers in the input arrays. For signed integer inputs, the two’s complement is returned. In a two’s-complement system negative numbers are represented by the two’s complement of the absolute value. This is the most common method of representing signed integers on computers [1]. A N-bit two’s-complement system can represent every integer in the range 

         −

          2

           N

           −

           1

        -2^{N-1}

     −2N−1 to 

         

          2

           N

           −

           1

         −

         1

        2^{N-1}-1

      2N−1−1. 

函数invert()计算输入数组中整数的二进制按位NOT结果. 也就是说 Numpy库中的bitwise_not() 和 invert()是一个函数,作用相同,只是名字不同. 验证一下发现两者其实是相等的: 

>>>np.bitwise_not is np.invert

True

下面举例来看invert函数的作用. 官网的例子,我们知道整数"13"以二进制表示为"00001101",将13进行invert()转化有 : 

>>> np.invert(np.arange([13], dtype=unit8))

array([242],dtype=unit8)

输出的是242,这个242又是什么呢? 将242转换成二进制数: 

>>> np.binary_repr(242, width=8)

'11110010'

这里np.binary_repr() 函数返回给定宽度中十进制数的二进制表示形式。 由输出结果可以发现,"242"的二进制表示“”11110010“”其实就是"00001101"的按位取否. 

输出的结果取决于bit_width 

当dtype取unit16时,结果会变得不同: 

>>> np.invert(np.array([13], dtype=uint16))

array([65522], dtype=uint16)

>>> np.binary_repr(x, width=16)

'0000000000001101'

>>> np.binary_repr(65522, width=16)

'1111111111110010'

当使用含符号整数类型"int8"时,结果是无符号类型的结果的二进制补码: 

>>> np.invert(np.array([13], dtype=int8))

array([-14], dtype=int8)

>>> np.binary_repr(-14, width=8)

'11110010'

参考资料 

【1】 numpy.invert——Numpy

0 人点赞