NumPy位操作
NumPy - 位操作
下面是 NumPy 包中可用的位操作函数。
| 序号 | 操作及描述 |
|---|---|
| 1. | bitwise_and 对数组元素执行位与操作 |
| 2. | bitwise_or 对数组元素执行位或操作 |
| 3. | invert 计算位非 |
| 4. | left_shift 向左移动二进制表示的位 |
| 5. | right_shift 向右移动二进制表示的位 |
bitwise_and
通过np.bitwise_and()函数对输入数组中的整数的二进制表示的相应位执行位与运算。
例子
import numpy as np
print '13 和 17 的二进制形式:'
a,b = 13,17
print bin(a), bin(b)
print '\n'
print '13 和 17 的位与:'
print np.bitwise_and(13, 17)
输出如下:
13 和 17 的二进制形式:
0b1101 0b10001
13 和 17 的位与:
1
你可以使用下表验证此输出。 考虑下面的位与真值表。
| A | B | AND |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | ||
|---|---|---|---|---|---|
| AND | |||||
| 1 | 0 | 0 | 0 | 1 | |
| result | 0 | 0 | 0 | 0 | 1 |
bitwise_or
通过np.bitwise_or()函数对输入数组中的整数的二进制表示的相应位执行位或运算。
例子
import numpy as np
a,b = 13,17
print '13 和 17 的二进制形式:'
print bin(a), bin(b)
print '13 和 17 的位或:'
print np.bitwise_or(13, 17)
输出如下:
13 和 17 的二进制形式:
0b1101 0b10001
13 和 17 的位或:
29
你可以使用下表验证此输出。 考虑下面的位或真值表。
| A | B | OR |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | ||
|---|---|---|---|---|---|
| OR | |||||
| 1 | 0 | 0 | 0 | 1 | |
| result | 1 | 1 | 1 | 0 | 1 |
invert
此函数计算输入数组中整数的位非结果。 对于有符号整数,返回补码。
例子
import numpy as np
print '13 的位反转,其中 ndarray 的 dtype 是 uint8:'
print np.invert(np.array([13], dtype = np.uint8))
print '\n'
# 比较 13 和 242 的二进制表示,我们发现了位的反转
print '13 的二进制表示:'
print np.binary_repr(13, width = 8)
print '\n'
print '242 的二进制表示:'
print np.binary_repr(242, width = 8)
输出如下:
13 的位反转,其中 ndarray 的 dtype 是 uint8:
[242]
13 的二进制表示:
00001101
242 的二进制表示:
11110010
请注意,np.binary_repr()函数返回给定宽度中十进制数的二进制表示。
left_shift
numpy.left shift()函数将数组元素的二进制表示中的位向左移动到指定位置,右侧附加相等数量的 0。
例如,
import numpy as np
print '将 10 左移两位:'
print np.left_shift(10,2)
print '\n'
print '10 的二进制表示:'
print np.binary_repr(10, width = 8)
print '\n'
print '40 的二进制表示:'
print np.binary_repr(40, width = 8)
# '00001010' 中的两位移动到了左边,并在右边添加了两个 0。
输出如下:
将 10 左移两位:
40
10 的二进制表示:
00001010
40 的二进制表示:
00101000
right_shift
numpy.right_shift()函数将数组元素的二进制表示中的位向右移动到指定位置,左侧附加相等数量的 0。
import numpy as np
print '将 40 右移两位:'
print np.right_shift(40,2)
print '\n'
print '40 的二进制表示:'
print np.binary_repr(40, width = 8)
print '\n'
print '10 的二进制表示:'
print np.binary_repr(10, width = 8)
# '00001010' 中的两位移动到了右边,并在左边添加了两个 0。
输出如下:
将 40 右移两位:
10
40 的二进制表示:
00101000
10 的二进制表示:
00001010
NumPy位操作的更多相关文章
- NumPy教程目录
NumPy Ndarray对象 NumPy数组属性 NumPy数据类型 NumPy数组创建例程 NumPy来自现有数据的数组 NumPy来自数值范围的数组 NumPy切片和索引 NumPy - 高级索 ...
- Python之Numpy详细教程
NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...
- 安装numpy
为了运行机器学习书上的实例,安装numpy.照着网上教程安装的,网上教程 1)下载numpy包 下载地址:https://pypi.python.org/pypi/numpy/#downloads 自 ...
- numpy安装-【老鱼学numpy】
要玩numpy,就得要安装numpy. 安装python 3.6.3 64位 首先需要安装python,安装python的具体方法这里就不细讲了. 可以到官网上下载相应的python版本就可以了,目前 ...
- numpy学习笔记(三)
(1)numpy的位操作 序号 操作及描述 1. bitwise_and 对数组元素执行位与操作 2. bitwise_or 对数组元素执行位或操作 3. ...
- Python numpy 安装以及处理报错 is not a supported wheel on this platform
1. 安装 1)去这里搜索https://pypi.org/ 2)搜索框输入numpy 3)一般第一个就是搜索到的 4)点进去 5) Download files 点进去,找自己的版本 6)nu ...
- numpy函数查询手册
写了个程序,对Numpy的绝大部分函数及其说明进行了中文翻译. 原网址:https://docs.scipy.org/doc/numpy/reference/routines.html#routine ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
随机推荐
- Spring Cloud Zuul实现IP访问控制
接着上篇文章 https://www.cnblogs.com/mxmbk/p/9569438.html IP访问限制和黑白名单如何做,需要解决以下几个问题: 1.如何识别正常访问和异常访问?(一段时间 ...
- pycharm中配置Django运行环境(包括run manage.py task)
1.特别注意Environment variables(环境变量)的配置 DJANGO_SETTINGS_MODULE=(项目名).settings 如: DJANGO_SETTINGS_MODULE ...
- python框架Scrapy中crawlSpider的使用
一.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo3 二.进入工程目录,根据爬虫模板生成爬虫文件 #scrapy genspi ...
- MYSQ无法启动
http://bbs.51cto.com/thread-433491-1.html http://www.linuxdiyf.com/viewarticle.php?id=97065 http://b ...
- Spring 的IOC容器之注解的方式
1. 环境搭建 1.1 导入所需 jar 包 引入 IOC 容器必须的6个jar包; spring-aop-4.3.10.RELEASE.jar, Spring 框架的AOP的jar包; 1.2 创建 ...
- 删除DOM元素 parent.removeChild(target)
p.removeChild(p.children[0]);
- linux c编程:记录锁
记录锁相当于线程同步中读写锁的一种扩展类型,可以用来对有亲缘或无亲缘关系的进程进行文件读与写的同步,通过fcntl函数来执行上锁操作.尽管读写锁也可以通过在共享内存区来进行进程的同步,但是fcntl记 ...
- 2016 安全行业全景图——By 安全牛
2014年有幸在北京办公室与安全牛的创办人刘朝阳见过一面,从那以后一直关注这安全牛(http://www.aqniu.com/)以及IT经理网(http://www.ctocio.com/).今年初看 ...
- HDFS各个进程存储在磁盘上的数据含义和注意事项
本文地址:http://www.cnblogs.com/qiaoyihang/p/6293402.html (一)Namenode的目录结构 HDFS进行初次格式化之后将会在$dfs.namenode ...
- redis.conf配置项说明
#是否以后台进程运行,默认为no,如果需要以后台进程运行则改为yes daemonize no #如果以后台进程运行的话,就需要指定pid,你可以在此自定义redis.pid文件的位置. pidfil ...