NumPy学习6
今天学习 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
'''
NumPy学习6的更多相关文章
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- NumPy学习笔记 一
NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...
- NumPy学习(让数据处理变简单)
NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...
- numpy 学习笔记
numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...
- numpy 学习总结
numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- Numpy学习1
NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...
随机推荐
- Qt开源作品27-鼠标定位十字线
一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...
- Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\opencv-4.1.0\modules\calib3d\src\calibration.cpp, line 3691
报错信息: Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\open ...
- Windows操作系统中,在某一目录下快速启动cmd窗口的方法
首先,在资源管理器中手动进入目标目录,之后在该目录下空白处,按住键盘shift键不放右击空白处弹出该窗口,点击在此处打开命令窗口.
- kubernetes系列(八) - 控制器的资源清单定义
1. ReplicaSet 1.1 ReplicaSet资源清单 1.2 selector 2. Deployment 2.1 Deployment资源清单 2.2 其他相关操作 2.2.1 应用ya ...
- 如何像专家一样高效使用 Google 搜索
如何像专家一样高效使用 Google 搜索 你几乎可以在互联网上搜索到任何内容,而Google是大多数人选择搜索信息的主要途径之一. 尽管频繁地使用Google,但是大部分互联网用户都不知道如何快速和 ...
- MAC 使用问题汇总
1. 在.zshrc中添加的环境变量不起作用 Answer: 需要把/etc/zshrc文件复制到 ~, 并命名为.zshrc,然后设置环境变量即可:
- 关于 static 和 final 的一些理解
今天主要回顾一下 static 和 final 这两个关键字. 1. static - 静态 修饰符 - 用于修饰数据(变量.对象).方法.代码块以及内部类. 1.1 静态变量 用 ...
- Elasticsearch(3)--- Docker容器中运行ES、Kibana、Cerebro
想加强ES有关的知识,看了阮一鸣老师讲的<Elasticsearch核心技术与实战>收获很大,所以接下来会跟着他来更加深入的学习ES. 这篇博客的目的就是部署好ES和跟ES相关的辅助工具, ...
- Linux中如何将txt文件转为png格式
Linux中如何将txt文件转为png格式 linux将txt文件转为png格式如果文本中没有中文,使用enscript,如果文本包含中文,使用paps命令.但是实际使用中,paps部分版本也不支持中 ...
- lvm相关命令及/etc/fstab开机挂载
名词解释: PV: 物理卷(physicalvolume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区.磁盘等)比 ...