NumPy位操作

NumPy - 位操作

下面是 NumPy 包中可用的位操作函數。

序號

操作及描述

1.

bitwise_and 對數組元素執行位與操作

2.

bitwise_or 對數組元素執行位或操作

3.

invert 計算位非

4.

left_shift 向左移動二進制表示的位

5.

right_shift 向右移動二進制表示的位

bitwise_and

通過np.bitwise_and()函數對輸入數組中的整數的二進制表示的相應位執行位與運算。

例子

import numpy as np 
print '13 和 17 的二進制形式:' 
a,b = 13,17 
print bin(a), bin(b) 
print '\n'  

print '13 和 17 的位與:' 
print np.bitwise_and(13, 17)

輸出如下:

13 和 17 的二進制形式:
0b1101 0b10001

13 和 17 的位與:
1

你可以使用下表驗證此輸出。 考慮下面的位與真值表。

A

B

AND

1

1

1

1

0

0

0

1

0

0

0

0

1

1

0

1

AND

1

0

0

0

1

result

0

0

0

0

1

bitwise_or

通過np.bitwise_or()函數對輸入數組中的整數的二進制表示的相應位執行位或運算。

例子

import numpy as np 
a,b = 13,17 
print '13 和 17 的二進制形式:' 
print bin(a), bin(b)  

print '13 和 17 的位或:' 
print np.bitwise_or(13, 17)

輸出如下:

13 和 17 的二進制形式:
0b1101 0b10001

13 和 17 的位或:
29

你可以使用下表驗證此輸出。 考慮下面的位或真值表。

A

B

OR

1

1

1

1

0

1

0

1

1

0

0

0

1

1

0

1

OR

1

0

0

0

1

result

1

1

1

0

1

invert

此函數計算輸入數組中整數的位非結果。 對於有符號整數,返回補碼。

例子

import numpy as np 

print '13 的位反轉,其中 ndarray 的 dtype 是 uint8:' 
print np.invert(np.array([13], dtype = np.uint8)) 
print '\n'  
# 比較 13 和 242 的二進制表示,我們發現了位的反轉

print '13 的二進制表示:' 
print np.binary_repr(13, width = 8) 
print '\n'  

print '242 的二進制表示:' 
print np.binary_repr(242, width = 8)

輸出如下:

13 的位反轉,其中 ndarray 的 dtype 是 uint8:
[242]

13 的二進制表示:
00001101

242 的二進制表示:
11110010

請注意,np.binary_repr()函數返回給定寬度中十進制數的二進制表示。

left_shift

numpy.left shift()函數將數組元素的二進制表示中的位向左移動到指定位置,右側附加相等數量的 0。

例如,

import numpy as np 

print '將 10 左移兩位:' 
print np.left_shift(10,2) 
print '\n'  

print '10 的二進制表示:' 
print np.binary_repr(10, width = 8) 
print '\n'  

print '40 的二進制表示:' 
print np.binary_repr(40, width = 8)  
#  '00001010' 中的兩位移動到了左邊,並在右邊添加了兩個 0。

輸出如下:

將 10 左移兩位:
40

10 的二進制表示:
00001010

40 的二進制表示:
00101000

right_shift

numpy.right_shift()函數將數組元素的二進制表示中的位向右移動到指定位置,左側附加相等數量的 0。

import numpy as np 

print '將 40 右移兩位:' 
print np.right_shift(40,2) 
print '\n'  

print '40 的二進制表示:' 
print np.binary_repr(40, width = 8) 
print '\n'  

print '10 的二進制表示:' 
print np.binary_repr(10, width = 8)  
#  '00001010' 中的兩位移動到了右邊,並在左邊添加了兩個 0。

輸出如下:

將 40 右移兩位:
10

40 的二進制表示:
00101000

10 的二進制表示:
00001010