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编写地图综合应用55-海量点位标注
一.前言 海量点位标注的出现,是为了解决普通设备点超过几百个性能极速降低的问题,普通的marker标注由于采用的是对象的形式存在于地图中,数量越多,占用内存特别大,超过1000个点性能极其糟糕,哪怕是 ...
- 2025年了,你还不会配置Jetson Orin NX嘛?
2025年了,你还不会配置Jetson Orin NX嘛? 我的设备为:Jetson Orin NX 16G + JetPack6.1+达妙科技载板 帅气的Jetson Orin NX拿到手了,都20 ...
- 安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案
安装OpenCV时,会遇到下面的错误 /home/zhang/slam/opencv-3.4.5/opencv_contrib/modules/xfeatures2d/src/boostdesc.cp ...
- ERROR: SSL peer shut down incorrectly错误解决(Android Studio)
错误信息:ERROR: SSL peer shut down incorrectly错误解决(Android Studio) 错误原因:android studio在下载"gradle-4. ...
- Kaggle API使用范例
kaggle.com/docs/api
- preparation
课程知识准备 HTML5基础教程 CSS3基础教程 JavaScript基础教程 HTML DOM基础教程 VUE3基础教程 Element Plus OpenLayers vue3-openlaye ...
- SQL优化——深分页&排序
问题背景 在开发 Web 应用或处理数据库查询时,分页是一项常见需求.然而,当面对深度分页(即页码较大,偏移量较高的分页情况)时,性能问题往往接踵而至.比如对一些需要拉特定的页面查询.范围导出.范围计 ...
- CDS标准视图:ABC标识文本 I_ABCIndicatorText
视图名称:ABC标识文本 I_ABCIndicatorText 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'ABC Indicator - Text' @V ...
- biancheng-MongoDB教程
目录http://c.biancheng.net/mongodb2/ 1NoSQL是什么2MongoDB是什么3Windows安装MongoDB4Linux安装MongoDB5MacOS安装Mongo ...
- 项目PMP之一项目管理介绍
一.项目定义: 概要:为创造独特的产品.服务或成果而进行的临时性工作 组织创造价值和效益.项目驱动变更创造商业价值的主要方式 特性/要素: 独特的产品.服务或成果,即一个或多个可交付成果(范围.进度( ...