今天学习 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开发经验小技巧171-175

    在Qt编程中经常会遇到编码的问题,由于跨平台的考虑兼容各种系统,而windows系统默认是gbk或者gb2312编码,当然后期可能msvc编译器都支持utf8编码,所以在部分程序中传入中文目录文件名称 ...

  2. Soulmate

    理想之所以是理想,也就是因为它只能存在于脑海中,天上月是天上月,水中花是水中花.但我们仍可以怀揣着对乌托邦的向往,所以,我对理想中的对象设想如下: 原来形容一个女子的眉眼,我总喜欢说眉眼如黛,眉如远山 ...

  3. Github绝版开源加速神器fastgit下载链接

    Github绝版开源加速神器fastgit下载链接: https://pan.baidu.com/s/1R-4rWuxh0_awIRaWCiGWkQ 提取码: yyrg 参考链接:发现一款稳定可靠的 ...

  4. 哔哩哔哩从0到1自研智能客服IM系统的技术实践之路

    本文由B端技术中心分享,原题"从0到1:哔哩哔哩智能客服系统的设计与实现",本文有修订和改动. 1.引言 本文将要分享的是哔哩哔哩从0到1自研智能客服IM系统的技术实践过程,包括整 ...

  5. Scala,一门「特立独行」的语言!

    入门 Spark 的路上很难不接触 Scala . Scala 似乎是为 java 提供了很多『类似函数式编程』的语法糖,这里记录一下这个语言独特的地方分享给读者朋友们. 参考资料主要有: 曹洁 . ...

  6. C# wpf,winform修改另一个.net EXE程序集的resources 资源文件

    可以使用Mono.Cecil库更新.添加可执行文件的资源 以下是使用 Mono.Cecil 进行资源操作的三种基本方法: 首先需要程序中引入 Mono.Cecil Nuget: PM> Inst ...

  7. cpa-财务成本管理

    1.财务管理基本原理 2.财务报表分析和财务预测 3.价值评估基础 4.资本成本 5.投资项目资本预算 6.债券.股票价值评估 7.期权价值评估 8.企业价值评估 9.资本结构 10.长期筹资 11. ...

  8. Golang-接口7

    http://c.biancheng.net/golang/interface/ Go语言接口声明(定义) Go语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念 ...

  9. SM9-加解密

    算法过程 程序实现 ///************************************************************************ // File name: ...

  10. 第一个helloworld,有点小兴奋

      @SpringBootApplication package com.ch.boot; import org.springframework.boot.SpringApplication; imp ...