鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ NumPy位操作
NumPy位操作
NumPy數(shù)學算數(shù)函數(shù)
NumPy高級索引
NumPy環(huán)境安裝配置
NumPy IO文件操作
NumPy字符串函數(shù)
NumPy切片和索引
NumPy統(tǒng)計函數(shù)
NumPy矩陣庫
NumPy數(shù)組創(chuàng)建例程
NumPy線性代數(shù)
NumPy Matplotlib庫
NumPy教程
NumPy排序、搜索和計數(shù)函數(shù)
NumPy字節(jié)交換
NumPy Ndarray對象
NumPy數(shù)組操作
NumPy使用 Matplotlib 繪制直方圖
NumPy數(shù)組屬性
NumPy廣播
NumPy來自現(xiàn)有數(shù)據(jù)的數(shù)組
NumPy副本和視圖
NumPy在數(shù)組上的迭代
NumPy來自數(shù)值范圍的數(shù)組
NumPy算數(shù)運算
NumPy數(shù)據(jù)類型

NumPy位操作

NumPy - 位操作

下面是 NumPy 包中可用的位操作函數(shù)。

序號 操作及描述
1. bitwise_and 對數(shù)組元素執(zhí)行位與操作
2. bitwise_or 對數(shù)組元素執(zhí)行位或操作
3. invert 計算位非
4. left_shift 向左移動二進制表示的位
5. right_shift 向右移動二進制表示的位

bitwise_and

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

例子

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()函數(shù)對輸入數(shù)組中的整數(shù)的二進制表示的相應(yīng)位執(zhí)行位或運算。

例子

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

此函數(shù)計算輸入數(shù)組中整數(shù)的位非結(jié)果。 對于有符號整數(shù),返回補碼。

例子

import numpy as np 

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

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

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

輸出如下:

13 的位反轉(zhuǎn),其中 ndarray 的 dtype 是 uint8:
[242]

13 的二進制表示:
00001101

242 的二進制表示:
11110010

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

left_shift

numpy.left shift()函數(shù)將數(shù)組元素的二進制表示中的位向左移動到指定位置,右側(cè)附加相等數(shù)量的 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()函數(shù)將數(shù)組元素的二進制表示中的位向右移動到指定位置,左側(cè)附加相等數(shù)量的 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