zoukankan      html  css  js  c++  java
  • 10、numpy——位运算

    NumPy 位运算

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

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

    函数描述
    bitwise_and 对数组元素执行位与操作
    bitwise_or 对数组元素执行位或操作
    invert 按位取反
    left_shift 向左移动二进制表示的位
    right_shift 向右移动二进制表示的位

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

    1、bitwise_and

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

    1 import numpy as np
    2 print('13 和 17 的二进制形式:')
    3 a, b = 13, 17
    4 print(type(a))
    5 print(bin(a), bin(b))
    6 print('13 和 17 的位与:')
    7 print(np.bitwise_and(13, 17))
    8 print(a & b)

     执行结果:

    1 13 和 17 的二进制形式:
    2 <class 'int'>
    3 0b1101 0b10001
    4 13 和 17 的位与:
    5 1
    6 1

    以上实例可以用下表来说明:

      1101
    AND
      1 0 0 0 1
    运算结果 0 0 0 0 1

    2、bitwise_or

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

    1 import numpy as np
    2 a, b = 13, 17
    3 print('13 和 17 的二进制形式:')
    4 print(bin(a), bin(b))
    5 print('13 和 17 的位或:')
    6 print(np.bitwise_or(13, 17))
    7 print(a | b)

    执行结果

    13 和 17 的二进制形式:
    0b1101 0b10001
    13 和 17 的位或:
    29
    29

    以上实例可以用下表来说明:

      1101
    OR
      1 0 0 0 1
    运算结果 1 1 1 0 1

    3、invert

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

    1 import numpy as np
    2 print('13 的二进制表示:')
    3 print(np.binary_repr(13, width=8))
    4 print('242 的二进制表示:')
    5 print(np.binary_repr(242, width=8))
    6 print('13 的位反转,其中 ndarray 的 dtype 是 uint8:')
    7 print(np.invert(np.array([13], dtype=np.uint8)))

    执行结果:

    13 的二进制表示:
    00001101
    242 的二进制表示:
    11110010
    13 的位反转,其中 ndarray 的 dtype 是 uint8:
    [242]

    4、left_shift

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

    1 import numpy as np
    2 print('10 的二进制表示:')
    3 print(np.binary_repr(10, width=8))
    4 print('40 的二进制表示:')
    5 print(np.binary_repr(40, width=8))
    6 print('将 10 左移两位:')
    7 print(np.left_shift(10, 2))
    8 print('
    ')

    执行结果:

    10 的二进制表示:
    00001010
    40 的二进制表示:
    0010100010 左移两位:
    40

    5、right_shift

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

    1 import numpy as np
    2 print('40的二进制表示:')
    3 print(np.binary_repr(40, width=8))
    4 print('10的二进制表示:')
    5 print(np.binary_repr(10, width=8))
    6 print('将40右移两位:')
    7 print(np.right_shift(40, 2))

    执行结果:

    import numpy as np
    print('40的二进制表示:')
    print(np.binary_repr(40, width=8))
    print('10的二进制表示:')
    print(np.binary_repr(10, width=8))
    print('将40右移两位:')
    print(np.right_shift(40, 2))
  • 相关阅读:
    Spark 内核架构+宽依赖与窄依赖+基于Yarn的两种提交模式
    Spark RDD高级编程:基于排序机制的wordcount程序+二次排序+topn
    Spark RDD持久化原理+共享变量原理(Broadcast Variable和Accumulator)
    Spark RDD工作原理详解+RDD JAVA API编程
    Spark 程序设计详解
    剑指offer 39.知识迁移能力 平衡二叉树
    剑指offer 38.知识迁移能力 二叉树的深度
    ElasticSearch 倒排索引原理+document写入流程+数据恢复
    剑指offer 37.知识迁移能力 数字在排序数组中出现的次数
    剑指offer 36.时间空间效率的平衡 两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/weststar/p/11588926.html
Copyright © 2011-2022 走看看