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位操作的更多相关文章

  1. NumPy教程目录

    NumPy Ndarray对象 NumPy数组属性 NumPy数据类型 NumPy数组创建例程 NumPy来自现有数据的数组 NumPy来自数值范围的数组 NumPy切片和索引 NumPy - 高级索 ...

  2. Python之Numpy详细教程

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...

  3. 安装numpy

    为了运行机器学习书上的实例,安装numpy.照着网上教程安装的,网上教程 1)下载numpy包 下载地址:https://pypi.python.org/pypi/numpy/#downloads 自 ...

  4. numpy安装-【老鱼学numpy】

    要玩numpy,就得要安装numpy. 安装python 3.6.3 64位 首先需要安装python,安装python的具体方法这里就不细讲了. 可以到官网上下载相应的python版本就可以了,目前 ...

  5. numpy学习笔记(三)

    (1)numpy的位操作 序号         操作及描述 1.      bitwise_and 对数组元素执行位与操作 2.      bitwise_or 对数组元素执行位或操作 3.      ...

  6. Python numpy 安装以及处理报错 is not a supported wheel on this platform

    1.    安装 1)去这里搜索https://pypi.org/ 2)搜索框输入numpy 3)一般第一个就是搜索到的 4)点进去 5) Download files 点进去,找自己的版本 6)nu ...

  7. numpy函数查询手册

    写了个程序,对Numpy的绝大部分函数及其说明进行了中文翻译. 原网址:https://docs.scipy.org/doc/numpy/reference/routines.html#routine ...

  8. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  9. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

随机推荐

  1. Go语言的一些资料汇总

    1. 8分钟了解你为什么应该学习Go语言 https://www.bilibili.com/video/av45561733/ 2.手把手教你从零开始搭建Go语言开发环境 https://www.bi ...

  2. 目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Tech report

    目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Te ...

  3. 13.php面向对象

    1.构造函数 public __construct() {} 2.析构函数 public __destruct() {} 3.对象调用属性 //数以调用时候要用    -> 而不是Java的点. ...

  4. tpot从elastic search拉攻击数据之三 用于拉取的java程序

    package download; import org.json.JSONArray; import java.io.*; import java.net.URL; import java.net. ...

  5. python常用方法详解

    1,讲序列分解为单独的变量 p=(4,5) x,y=p print(x,y) 如果在分解中想丢弃某些特定的值,可以采用_来进行 data=['A','B','c','d'] _,name,age,_= ...

  6. Linux学习笔记(7)CRT实现windows与linux的文件上传下载

    Linux学习笔记(7)CRT实现windows与linux的文件上传下载 按下Alt + p 进入SFTP模式,或者右击选项卡进入 命令介绍 help 显示该FTP提供所有的命令 lcd 改变本地上 ...

  7. 006-虚拟机中centos7实现nat静态ip上网

    1.设置虚拟机网卡VMnet8 2.修改虚拟机参数 (1).点击编辑-->虚拟网络编辑器,如下图设置 (2)nat设置如下[使用默认即可,记住网关.掩码等,非常重要,因为在centos里面要设置 ...

  8. jsp创建cookie

    <jsp:include flush="true" page="header.jsp" /> <script type="text/ ...

  9. 吴超老师课程--Hbase介绍和伪分布式安装

    1.HBase(NoSQL)的数据模型1.1 表(table),是存储管理数据的.1.2 行键(row key),类似于MySQL中的主键.     行键是HBase表天然自带的.1.3 列族(col ...

  10. DP专题·二

    1.hdu 1260 Tickets 题意:有k个人,售票员可以选择一个人卖,或者同时卖给相邻的两个人.问最少的售票时间. 思路:dp[i] = min(dp[i - 1] + singlep[i], ...