今天学习 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的更多相关文章

  1. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  2. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  3. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  5. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  6. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  7. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  8. numpy 学习总结

    numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...

  9. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  10. Numpy学习1

    NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...

随机推荐

  1. Qt开源作品27-鼠标定位十字线

    一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...

  2. 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 ...

  3. Windows操作系统中,在某一目录下快速启动cmd窗口的方法

    首先,在资源管理器中手动进入目标目录,之后在该目录下空白处,按住键盘shift键不放右击空白处弹出该窗口,点击在此处打开命令窗口.

  4. kubernetes系列(八) - 控制器的资源清单定义

    1. ReplicaSet 1.1 ReplicaSet资源清单 1.2 selector 2. Deployment 2.1 Deployment资源清单 2.2 其他相关操作 2.2.1 应用ya ...

  5. 如何像专家一样高效使用 Google 搜索

    如何像专家一样高效使用 Google 搜索 你几乎可以在互联网上搜索到任何内容,而Google是大多数人选择搜索信息的主要途径之一. 尽管频繁地使用Google,但是大部分互联网用户都不知道如何快速和 ...

  6. MAC 使用问题汇总

    1. 在.zshrc中添加的环境变量不起作用 Answer: 需要把/etc/zshrc文件复制到 ~, 并命名为.zshrc,然后设置环境变量即可:

  7. 关于 static 和 final 的一些理解

    今天主要回顾一下 static 和 final 这两个关键字. 1. static  -  静态 修饰符 - 用于修饰数据(变量.对象).方法.代码块以及内部类.         1.1 静态变量 用 ...

  8. Elasticsearch(3)--- Docker容器中运行ES、Kibana、Cerebro

    想加强ES有关的知识,看了阮一鸣老师讲的<Elasticsearch核心技术与实战>收获很大,所以接下来会跟着他来更加深入的学习ES. 这篇博客的目的就是部署好ES和跟ES相关的辅助工具, ...

  9. Linux中如何将txt文件转为png格式

    Linux中如何将txt文件转为png格式 linux将txt文件转为png格式如果文本中没有中文,使用enscript,如果文本包含中文,使用paps命令.但是实际使用中,paps部分版本也不支持中 ...

  10. lvm相关命令及/etc/fstab开机挂载

    名词解释: PV: 物理卷(physicalvolume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区.磁盘等)比 ...