📜  Numpy 二元运算

📅  最后修改于: 2020-04-18 15:05:49             🧑  作者: Mango

二进制运算符作用于位并执行位操作。二进制运算只是将两个值组合以创建新值的规则。
numpy.bitwise_and()此函数用于计算两个数组元素的按位。此函数计算输入数组中整数的基础二进制表示形式的按位与。
代码1:

# Python程序解释#bitwise_and()函数
import numpy as np
in_num1 = 10
in_num2 = 11
print ("输入数字1 : ", in_num1)
print ("输入数字2 : ", in_num2)
out_num = np.bitwise_and(in_num1, in_num2)
print ("10和11的按位与 : ", out_num)

输出:

输入数字1 :  10
输入数字2 :  11
10和11的按位与 :  10

代码2:

# Python程序解释bitwise_and()函数
import numpy as np
in_arr1 = [2, 8, 125]
in_arr2 = [3, 3, 115]
print ("输入数组1 : ", in_arr1)
print ("输入数组2 : ", in_arr2)
out_arr = np.bitwise_and(in_arr1, in_arr2)
print ("bitwise_and之后的输出数组: ", out_arr)

输出:

输入数组1 :  [2, 8, 125]
输入数组2 :  [3, 3, 115]
bitwise_and之后的输出数组:  [  2   0 113]

numpy.bitwise_or()此函数用于计算两个数组元素的按位。此函数计算输入数组中整数的基础二进制表示的按位或。

代码1:

# Python程序解释bitwise_or()函数
import numpy as np
in_num1 = 10
in_num2 = 11
print ("输入数字1 : ", in_num1)
print ("输入数字2 : ", in_num2)
out_num = np.bitwise_or(in_num1, in_num2)
print ("bitwise_or of 10 and 11 : ", out_num)

输出:

输入数字1 :  10
输入数字2 :  11
按位或10和11 :  11

代码2:

# Python程序解释bitwise_or()函数
import numpy as np
in_arr1 = [2, 8, 125]
in_arr2 = [3, 3, 115]
print ("输入数组1 : ", in_arr1)
print ("输入数组2 : ", in_arr2)
out_arr = np.bitwise_or(in_arr1, in_arr2)
print ("bitwise_or之后的输出数组: ", out_arr)

输出:

输入数组1 :  [2, 8, 125]
输入数组2 :  [3, 3, 115]
bitwise_or之后的输出数组:  [  3  11 127]

numpy.bitwise_xor()此函数用于计算两个数组元素的按位 XOR。此函数计算输入数组中整数的基础二进制表示形式的按位XOR。
代码1:

import numpy as np
in_num1 = 10
in_num2 = 11
print ("输入数字1 : ", in_num1)
print ("输入数字2 : ", in_num2)
out_num = np.bitwise_xor(in_num1, in_num2)
print ("10和11的bitwise_xor : ", out_num)

输出:

输入数字1 :  10
输入数字2 :  11
10和11的bitwise_xor :  1

代码2:

# Python程序解释#bitwise_xor()函数
import numpy as np
in_arr1 = [2, 8, 125]
in_arr2 = [3, 3, 115]
print ("输入数组1 : ", in_arr1)
print ("输入数组2 : ", in_arr2)
out_arr = np.bitwise_xor(in_arr1, in_arr2)
print ("bitwise_xor之后的输出数组: ", out_arr)

输出:

输入数组1 :  [2, 8, 125]
输入数组2 :  [3, 3, 115]
bitwise_xor之后的输出数组:  [ 1 11 14]

numpy.invert()此函数用于计算数组元素的按位反转。它计算输入数组中整数的基础二进制表示的按位非。
对于有符号整数输入,将返回二进制补码。在二进制补码系统中,负数由绝对值的二进制补码表示。
代码1:

# Python程序解释invert()函数
import numpy as np
in_num = 10
print ("输入号码 : ", in_num)
out_num = np.invert(in_num)
print ("倒置10: ", out_num)

输出:

输入号码 :  10
倒置10 :  -11

代码2:

# Python程序解释invert()函数
import numpy as np
in_arr = [2, 0, 25]
print ("输入数组 : ", in_arr)
out_arr = np.invert(in_arr)
print ("反转后的输出数组: ", out_arr)

输出:

输入数组 :  [2, 0, 25]
反转后的输出数组:  [ -3  -1 -26]

numpy.left_shift()此函数用于将整数的位向左移动。通过在arr1的右边添加arr2个0(zeroes)将位向左移动。由于数字的内部表示是二进制格式,因此此操作等效于将arr1乘以2 ** arr2。例如,如果数字为5,而我们想向左移2位,那么在向左移2位之后,结果将是5 *(2 ^ 2)= 20
代码1:

# Python程序解释left_shift()函数
import numpy as np
in_num = 5
bit_shift = 2
print ("输入号码 : ", in_num)
print ("移位数 : ", bit_shift )
out_num = np.left_shift(in_num, bit_shift)
print ("左移2位后  : ", out_num)

输出:

输入号码 :  5
移位数 :  2
左移2位后it  :  20

代码2:

# Python程序解释left_shift()函数
import numpy as np
in_arr = [2, 8, 15]
bit_shift =[3, 4, 5]
print ("输入数组 : ", in_arr)
print ("移位数 : ", bit_shift)
out_arr = np.left_shift(in_arr, bit_shift)
print ("左移后的输出数组: ", out_arr)

输出:

输入数组 :  [2, 8, 15]
移位数 :  [3, 4, 5]
左移后的输出数组:  [ 16 128 480]

numpy.right_shift()此函数用于将整数的位向右移动。由于数字的内部表示是二进制格式,因此此操作等效于将arr1除以2 ** arr2。例如,如果数字为20,并且我们想右移2位,那么在右移2位后,结果将为20 /(2 ^ 2)= 5。

代码1:

# Python程序解释right_shift()函数
import numpy as np
in_num = 20
bit_shift = 2
print ("输入号码 : ", in_num)
print ("移位数 : ", bit_shift )
out_num = np.right_shift(in_num, bit_shift)
print ("右移2位后  : ", out_num)

输出:

输入号码 :  20
移位数 :  2
右移2位后it  :  5

代码2:

# Python程序解释right_shift()函数
import numpy as np
in_arr = [24, 48, 16]
bit_shift =[3, 4, 2]
print ("输入数组 : ", in_arr)
print ("移位数 : ", bit_shift)
out_arr = np.right_shift(in_arr, bit_shift)
print ("右移后的输出数组: ", out_arr)

输出:

输入数组 :  [24, 48, 16]
移位数 :  [3, 4, 2]
右移后的输出数组:  [3 3 4]

numpy.binary_repr(number,width = None)此函数用于将输入数字的二进制形式表示为字符串。对于负数,如果未指定宽度,则在前面加上减号。如果给定宽度,则返回该宽度的数字的二进制补码。在二进制补码系统中,负数由绝对值的二进制补码表示。这是在计算机上表示有符号整数的最常用方法。
代码1:

# Python程序解释binary_repr()函数
import numpy as np
in_num = 10
print ("输入号码 : ", in_num)
out_num = np.binary_repr(in_num)
print ("10的二进制表示 : ", out_num)

输出:

输入号码 :  10
10的二进制表示 :  1010

代码2:

# Python程序解释binary_repr()函数
import numpy as np
in_arr = [5, -8 ]
print ("输入数组 : ", in_arr)
# 不使用width参数的第一个数组元素的二进制表示
out_num = np.binary_repr(in_arr[0])
print("5的二进制表示")
print ("不使用宽度参数 : ", out_num)
# 使用width参数的第一个数组元素的二进制表示
out_num = np.binary_repr(in_arr[0], width = 5)
print ("使用宽度参数: ", out_num)
print("\n-8的二进制表示")
# 不使用width参数的第二个数组元素的二进制表示形式
out_num = np.binary_repr(in_arr[1])
print ("不使用宽度参数 : ", out_num)
# 使用width参数的第二个数组元素的二进制表示
out_num = np.binary_repr(in_arr[1], width = 5)
print ("使用宽度参数 : ", out_num)

输出:

输入数组 :  [5, -8]
5的二进制表示
不使用宽度参数 :  101
使用宽度参数:  00101
-8的二进制表示
不使用宽度参数 :  -1000
使用宽度参数 :  11000

numpy.packbits(myarray,axis = None):此函数用于将二进制值数组的元素打包为uint8数组中的位。结果通过在末尾插入零位填充为完整字节。
代码1:

# Python程序解释packbits()函数
import numpy as np
# 使用数组函数创建数组
a = np.array([[[1,0,1],
             [0,1,0]],
             [[1,1,0],
             [0,0,1]]])
# 使用packbits()函数包装数组的元素
b = np.packbits(a, axis=-1)
print(b)

输出:

[[[160],[64]],[[192],[32]]]

numpy.unpackbits(myarray,axis = None):此函数用于将uint8数组的元素解压缩为二进制值输出数组。myarray的每个元素代表一个位域,应将其解压缩为二进制值输出数组。输出数组的形状为1-D(如果轴为None)或与输入数组相同,并且沿指定的轴进行拆包。
代码1:

# Python程序解释unpackbits()函数
import numpy as np
# 使用数组函数创建数组
a = np.array([[2], [7], [23]], dtype=np.uint8)
# 使用packbits()函数包装数组的元素
b = np.unpackbits(a, axis = 1)
print(b)

输出:

[[0,0,0,0,0,0,1,0],
 [0,0,0,0,0,1,1,1],
 [0,0,0,1,0,1,1,1]]