首页 > 其他分享 >NumPy学习6

NumPy学习6

时间:2023-05-31 21:23:27浏览次数:37  
标签:运算 二进制 bitwise 学习 np 按位 print NumPy

今天学习 NumPy位运算

 

12, NumPy位运算
NumPy 中提供了以下按位运算函数:

numpy按位运算函数
序号 函数 位运算符 描述说明
1 bitwise_and & 计算数组元素之间的按位与运算。
2 bitwise_or | 计算数组元素之间的按位或运算。
3 invert ~ 计算数组元素之间的按位取反运算。
4 left_shift << 将二进制数的位数向左移。
5 right_shift >> 将二进制数的位数向右移。

numpy_test6.py :
import numpy as np

'''
12, NumPy位运算
NumPy 中提供了以下按位运算函数:

numpy按位运算函数
序号    函数    位运算符    描述说明
1    bitwise_and    &    计算数组元素之间的按位与运算。
2    bitwise_or    |    计算数组元素之间的按位或运算。
3    invert    ~    计算数组元素之间的按位取反运算。
4    left_shift    <<    将二进制数的位数向左移。
5    right_shift    >>    将二进制数的位数向右移。
'''

'''
(1) bitwise_and()
该函数对数组中整数的二进制数进行“按位与”运算。
'''
print("----(1) bitwise_and()----")
a1 = 10
b1 = 9
print("a1的二进制数:", bin(a1))
print("b1的二进制数:", bin(b1))
print("将a1与b1执行按位与操作:", np.bitwise_and(a1, b1))
'''
a1的二进制数: 0b1010
b1的二进制数: 0b1001
将a1与b1执行按位与操作: 8

如果两个的二进制数相对应的位都为 1,那么执行位与运算后,该位的结果就为 1,否则就为 0。
上述示例:a1 与 b1 位与运算的结果为 1000,因此它的十进制结果为 8。

位与运算真值表
A    B    AND(A,B)
0    0    0
0    1    0
1    0    0
1    1    1
'''

'''
(2) bitwise_or()
bitwise_or() 对数组中整数的二进制数执行“按位或”运算。
'''
print("----(2) bitwise_or()----")
a2 = 10
b2 = 13
print("a2的二进制数:", bin(a2))
print("b2的二进制数:", bin(b2))
print("将a2与b2执行按位或操作:", np.bitwise_or(a2, b2))
'''
a2的二进制数: 0b1010
b2的二进制数: 0b1101
将a2与b2执行按位或操作: 15

对于按位或运算,只要相对应的二进制位上有一个为 1,那么它的运算结果就位 1,否则为 0,其真值表如下:

位或运算真值表
A    B    OR(A,B)
0    0    0
0    1    1
1    0    1
1    1    1
'''

'''
(3) Invert()
该方法对数组中整数做按位取反运算,也就是 0 变成 1,1 变为 0。
若是有符号的负整数,取其二进制数的补码,并执行 +1 操作。
对于有符号二进制数,其最高位为 0, 表示正数;最高位为 1, 表示负数。
'''
print("----(3) Invert()----")
# 数据类型为无符号整型uint8
arr1 = np.array([20], dtype=np.uint8)
print("arr1 :", arr1)
print("arr1的二进制数:", bin(arr1[0]))
print("二进制表示:", np.binary_repr(arr1[0], 8))
arr2 = np.invert(arr1)
print("arr2 :", arr2)
# 进行取反操作
print("arr2的二进制数:", bin(arr2[0]))
print("二进制表示: ", np.binary_repr(arr2[0], 8))
'''
arr1 : [20]
arr1的二进制数: 0b10100
二进制表示: 00010100
arr2 : [235]
arr2的二进制数: 0b11101011
二进制表示:  11101011

np.binary_repr(num, width) 函数用来设置二进制数的位数。
'''

'''
(4) left_shift()
该方法把数组元素的二进制数向左移动到指定位置,而其返回值所对应的二进制数,
    则会从右侧追加相等数量的 0(移动了多少位便追加多少个0)。
'''
print("----(4) left_shift()----")
a3 = 20
# 打印移动前 a3 的二进制数
print("移动前 a3 的二进制数:", np.binary_repr(a3, width=8))
# 左移动三位
b3 = np.left_shift(a3, 3)
# 左移动三位后的输出值
print("将a3 执行 左移动三位 操作:", b3)
# 左移函数返回值的二进制数
print("左移函数返回值 b3 的二进制数:", np.binary_repr(b3, width=8))
'''
移动前 a3 的二进制数: 00010100
将a3 执行 左移动三位 操作: 160
左移函数返回值 b3 的二进制数: 10100000
'''

'''
(5) right_shift()
right_shift() 将数组中元素的二进制数向右移动到指定位置,其返回值对应的二进制数会从左侧追加相等数量的 0。
    该函数使用与 left_shift() 恰好相反。
'''
print("----(5) right_shift()----")
a4 = 50
# 打印移动前 a4 的二进制数
print("移动前 a4 的二进制数:", np.binary_repr(a4, width=8))
# 右移动三位
b4 = np.right_shift(a4, 3)
# 右移动三位 后的输出值
print("将 a4 执行 右移动三位 操作:", b4)
# 右移函数返回值的二进制数
print("右移函数返回值 b4 的二进制数:", np.binary_repr(b4, width=8))
'''
移动前 a4 的二进制数: 00110010
将 a4 执行 右移动三位 操作: 6
右移函数返回值 b4 的二进制数: 00000110
'''

 



 

 

标签:运算,二进制,bitwise,学习,np,按位,print,NumPy
From: https://www.cnblogs.com/xh2023/p/17447351.html

相关文章

  • Less学习(一)less变量
    前言Less语言中变量的使用方式主要有以下几种:普通变量选择器变量属性名变量URL变量参考Less中变量的使用......
  • kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习
    一、什么是容器容器简介简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。这种隔离是怎么做到的呢?它利用了内核提供的namespace和cgroup这2种技术。这些技术能力在Linux中已经存在了很长时间。而Docker或容器技术致力于将这些功能更......
  • 深度学习进阶篇[7]:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质
    深度学习进阶篇[7]:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。基于Transformer模型在众多领域已取得卓越成果,包括自然语言、图像甚至是音乐。然而,Transformer架构一直以来为人所诟病的是其注意力模块的低效,即长度二次依赖限制问题。随着输入......
  • 算法学习day37贪心part06-738、968
    packageLeetCode.greedypart06;/***738.单调递增的数字*当且仅当每个相邻位数上的数字x和y满足x<=y时,我们称这个整数是单调递增的。*给定一个整数n,返回小于或等于n的最大数字,且数字呈单调递增。*示例:*输入:n=332*输出:299**/public......
  • 算法学习day35贪心part04-860、406、452
    packageLeetCode.greedypart04;/***860.柠檬水找零*在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。*每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每......
  • 算法学习day36贪心part05-435、763、56
    packageLeetCode.greedypart05;importjava.util.Arrays;/***435.无重叠区间*给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。*示例:*输入:intervals=[[1,2],[2,3],[3,4],[1,3]]*输出......
  • 23年,我又学习了一次amd模块化,模块化思想
    项目目录srcview1index.htmlmain.jsview2pluginsmodule.jsjquery.js......modules//amd模块文件a1.jsb1.jsc.jsb2.jsb21.jssr......
  • 以样本学习方法解决设备故障检测中的标签问题
    文章的主要内容针对这些问题,提出了一种主动领域自适应智能故障检测框架LDE-ADA,该框架利用迁移学习和主动学习相结合的方法来解决标签域扩展问题,从而提高模型的检测性能。同时,提出了一种改进的主动学习查询策略,以准确选择目标域中新增加的健康类别样本来辅助模型训练,解决标签域扩......
  • zynq soc 学习资料
    1)https://zhuanlan.zhihu.com/p/163300131 2)https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0070-zynq-mpsoc-design-overview-hub.html 尤其ug1085  ZYNQUltraScale+MPSocFPGA初学笔记IEEE1364人在江湖身不由己已关注......
  • kettle的学习
    第1章Kettle概述1.1ETL简介ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。市面上常用的ETL工具有很多,比如Sqoop,DataX,Kettle,Talend等,作为一个大数据工程......