NumPy 教程目录

Lesson11——NumPy 位运算

  NumPy "bitwise_" 开头的函数是位运算函数。

  NumPy 位运算包括以下几个函数:

函数 描述
bitwise_and 对数组元素执行位与操作
bitwise_or 对数组元素执行位或操作
bitwise_xor 对数组元素执行位异或操作
invert 按位取反
left_shift 向左移动二进制表示的位
right_shift 向右移动二进制表示的位
binary_repr 以字符串形式返回输入数字的二进制表示形式

  注:也可以使用 "&"、 "~"、 "|" 和 "^" 等操作符进行计算。

1.1 bitwise_and

  bitwise_and() 函数对数组中整数的二进制形式执行位与运算。

Example:

a,b = 13,17
print ('13 的二进制形式:')
print (bin(a))
print ('17 的二进制形式:')
print (bin(b))
print ('13 和 17 的位与:')
print (np.bitwise_and(13, 17))
"""
13 的二进制形式:
0b1101
17 的二进制形式:
0b10001
13 和 17 的位与:
1
"""

Example:

x1 = np.array([2, 5, 255])
x2 = np.array([3, 14, 16])
print(x1 & x2)
"""
[ 2 4 16]
"""

1.2 bitwise_or

  bitwise_or()函数对数组中整数的二进制形式执行位或运算。

Example:

print ('13 和 17 的位或:')
print (np.bitwise_or(13, 17))
"""
13 和 17 的位或:
29
"""

Example:

x1 = np.array([2, 5, 255])
x2 = np.array([4, 4, 4])
print(x1 | x2)
"""
[ 6 5 255]
"""

1.3 bitwise_xor

  bitwise_xor() 函数对数组中整数的二进制形式执行位异或运算。

Example:

print ('13 和 17 的异或:')
print (np.bitwise_xor(13, 17))
"""
13 和 17 的异或:
28
"""

Examples:

x1 = np.array([True, True])
x2 = np.array([False, True])
print(x1 ^ x2)
"""
[ True False]
"""

1.4 invert

  invert() 函数对数组中整数进行位取反运算,即 0 变成 11 变成 0

  对于有符号整数,取该二进制数的补码,然后 +1。二进制数,最高位为0表示正数,最高位为 1 表示负数。

  看看 ~1 的计算步骤:

    • 1(这里叫:原码)转二进制 = 00000001

    • 按位取反 = 11111110

    • 发现符号位(即最高位)为1(表示负数),将除符号位之外的其他数字取反 = 10000001

    • 末位加1取其补码 = 10000010

    • 转换回十进制 = -2

Examples:

print ('13 的位反转,其中 ndarray 的 dtype 是 int8:')
print (np.invert(np.array([13], dtype = np.int8)))
print ('13 的位反转,其中 ndarray 的 dtype 是 uint8:')
print (np.invert(np.array([13], dtype = np.uint8)))
# 比较 13 和 242 的二进制表示,我们发现了位的反转
print ('13 的二进制表示:')
print (np.binary_repr(13, width = 8))
print ('242 的二进制表示:')
print (np.binary_repr(242, width = 8))
"""
13 的位反转,其中 ndarray 的 dtype 是 int8:
[-14]
13 的位反转,其中 ndarray 的 dtype 是 uint8:
[242]
13 的二进制表示:
00001101
242 的二进制表示:
11110010
"""

Examples:

x = np.array([True,False])
print(~x)
"""
[False True]
"""

1.5 left_shift

  left_shift() 函数将数组元素的二进制形式向左移动到指定位置,右侧附加相等数量的 0

Example:

print(np.binary_repr(5))
print(np.left_shift(5,2))
print(np.binary_repr(20))
"""
101
20
10100
"""
print(np.left_shift(5,[1,2,3]))
"""
[10 20 40]
"""
print(np.binary_repr(5,width=8))
print(np.binary_repr(20,width=8))
"""
101
20
10100
[10 20 40]
00000101
00010100
"""

Example:

x1 = 5
x2 = np.array([1, 2, 3])
print(x1 << x2)
"""
[10 20 40]
"""

1.6 right_shift

  right_shift() 函数将数组元素的二进制形式向右移动到指定位置,左侧附加相等数量的 0

Example:

print ('将 40 右移两位:')
print (np.right_shift(40,2)) print ('40 的二进制表示:')
print (np.binary_repr(40, width = 8)) print ('10 的二进制表示:')
print (np.binary_repr(10, width = 8))
# '00001010' 中的两位移动到了右边,并在左边添加了两个 0。
"""
将 40 右移两位:
10
40 的二进制表示:
00101000
10 的二进制表示:
00001010
"""

Example:

x1 = 10
x2 = np.array([1,2,3])
print(x1 >> x2)
"""
[5 2 1]
"""

1.7 binary_repr

  binary_repr() 以字符串形式返回输入数字的二进制表示形式。

Example:

print(np.binary_repr(3))
print(np.binary_repr(-3))
print(np.binary_repr(3, width=4))
"""
11
-11
0011
"""
print(np.binary_repr(-3, width=3))
print(np.binary_repr(-3, width=5))
"""
11
-11
0011
101
11101
"""

Lesson11——NumPy 位运算的更多相关文章

  1. NumPy 位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  2. 10、numpy——位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  3. 吴裕雄--天生自然Numpy库学习笔记:NumPy 位运算

    bitwise_and() 函数对数组中整数的二进制形式执行位与运算. import numpy as np print ('13 和 17 的二进制形式:') a,b = 13,17 print ( ...

  4. Numpy | 13 位运算

    NumPy "bitwise_" 开头的函数是位运算函数.本章都是按二进制来操作的. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操 ...

  5. Numpy 为运算

    Numpy “bitwise_” 开头的函数是位运算函数: Numpy 位运算包括以下几个函数: 函数 描述  bitwise_and  对数组元素执行位与操作  bitwise_or 对数组元素执行 ...

  6. opencv入门系列教学(六)图像上的算术运算(加法、融合、按位运算)

    0.序言 这一篇博客我们将学习图像的几种算术运算,例如加法,减法,按位运算等. 1.图像加法 我们可以通过OpenCV函数 cv.add() 或仅通过numpy操作 res=img1+img2 res ...

  7. Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range

    在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...

  8. 简简单单学会C#位运算

    一.理解位运算 要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作 二.理解数字进制 上面 ...

  9. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解

    本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表   位运算   SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...

随机推荐

  1. C# string.Format 和 String.Format 的区别

    string.Format 和 String.Format  ,不论是用法还是意思,都是一样的 怎么使用? 通过 占位符来替换 ,类似于 Replace 的操作 string s = string.F ...

  2. spring boot 集群 + Nginx --- 心得

    1.前言 已经掌握了spring cloud 得使用 ,但这是在内部网络做业务 ,现在需要 在外部网络 访问内部网络 服务 ,引入了 服务端负载均衡 Nginx , Nginx 根据预定的策略 ,将请 ...

  3. PPT制作手机滑动效果

    原文链接: https://www.toutiao.com/i6495341287196066317/ 我们添加一个手机图片 选择"插入"选项卡,插入两条直线,如下图所示.插入直线 ...

  4. synchronized学习笔记

    概述 我们都知道加锁的目的就是:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问).在java对象中,每一个对象有且只有一个同步锁.这也意味着,同步锁依赖于对象而存在,当我们访问 ...

  5. 两张Number()函数图和Boolean()函数图

  6. 【PTA】5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。

    5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即"小时:分钟:秒",当小时等于24小时,置为0. #include <stdio.h> ...

  7. Android官方文档翻译 八 2.1Setting Up the Action Bar

    Setting Up the Action Bar 建立Action Bar This lesson teaches you to 这节课教给你 Support Android 3.0 and Abo ...

  8. Solon Web 开发,十三、WebSocket

    Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...

  9. 【小实验】rust的数组是在堆上分配还是在栈上分配的呢?

    先看代码: fn main(){ let v = [1,2,3,4,5]; let addr = &v[0] as *const i32 as usize; println!("ar ...

  10. 猪齿鱼 Choerodon 的数据初始化设计解析

    数智化效能平台猪齿鱼Choerodon 作为一个微服务框架,需要解决微服务数据初始化本身具有的问题和复杂性,同时也需要满足框架本身特有的数据初始化需求,下面为大家介绍一下这方面的设计思想和实现. 微服 ...