NumPy 教程 之 NumPy 位运算 2

简介: NumPy位运算在二进制位级别操作,用于优化及底层数据处理。NumPy提供`bitwise_`系列函数,如按位与(`bitwise_and`)、或(`bitwise_or`)、异或(`bitwise_xor`)、取反(`bitwise_not`/`invert`)以及移位运算(`left_shift`/`right_shift`)。这些运算直接作用于数组元素。

NumPy 教程 之 NumPy 位运算 2

NumPy 位运算

位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。

位运算在计算机科学中广泛应用于优化和处理底层数据。

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

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

函数 描述

bitwise_and 按位与,对数组元素执行位与操作
bitwise_or 按位或,对数组元素执行位或操作
bitwise_xor 按位异或
bitwise_not 按位取反
invert 按位取反
left_shift 左移位运算,向左移动二进制表示的位
right_shift 右移位运算,向右移动二进制表示的位

实例

import numpy as np

arr1 = np.array([True, False, True], dtype=bool)
arr2 = np.array([False, True, False], dtype=bool)

result_and = np.bitwise_and(arr1, arr2)
result_or = np.bitwise_or(arr1, arr2)
result_xor = np.bitwise_xor(arr1, arr2)
result_not = np.bitwise_not(arr1)

print("AND:", result_and) # [False, False, False]
print("OR:", result_or) # [True, True, True]
print("XOR:", result_xor) # [True, True, True]
print("NOT:", result_not) # [False, True, False]

按位取反

arr_invert = np.invert(np.array([1, 2], dtype=np.int8))
print("Invert:", arr_invert) # [-2, -3]

左移位运算

arr_left_shift = np.left_shift(5, 2)
print("Left Shift:", arr_left_shift) # 20

右移位运算

arr_right_shift = np.right_shift(10, 1)
print("Right Shift:", arr_right_shift) # 5

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

与运算(&): 对应位上的两个数字都为1时,结果为1;否则,结果为0。

例如:1010 & 1100 = 1000

或运算(|): 对应位上的两个数字有一个为1时,结果为1;否则,结果为0。

例如:1010 | 1100 = 1110

异或运算(^): 对应位上的两个数字相异时,结果为1;相同时,结果为0。

例如:1010 ^ 1100 = 0110

取反运算(~): 对数字的每个位取反,即0变为1,1变为0。

例如:~1010 = 0101

左移运算(<<): 将数字的所有位向左移动指定的位数,右侧用0填充。

例如:1010 << 2 = 101000

右移运算(>>): 将数字的所有位向右移动指定的位数,左侧根据符号位或补零。

例如:1010 >> 2 = 0010

目录
相关文章
|
物联网 Shell Swift
NPU推理&微调大模型实战
本文为魔搭社区轻量级训练推理工具SWIFT微调实战教程系列
|
11月前
|
CDN
阿里云CDN怎么收费?看这一篇就够了,CDN不同计费模式收费价格全解析
阿里云CDN的费用由基础费用和增值费用组成。基础费用有三种计费方式:按流量、按带宽峰值和月结95带宽峰值,默认为按流量计费,价格根据使用量阶梯递减。增值费用包括静态HTTPS请求、QUIC请求等,按实际使用量收费,不使用不收费。具体收费标准和详细规则可参考阿里云官方页面。
【编程基础知识】正数负数的二进制位运算(左移 右移 无符号右移)
正数和负数需转换成二进制后进行移位运算。左移低位补0,不影响符号位;右移符号位跟随移动,最高位还原为原符号位;无符号右移高位补0,适用于负数处理。
902 0
|
消息中间件 Kafka 测试技术
【Kafka揭秘】Leader选举大揭秘!如何打造一个不丢失消息的强大Kafka集群?
【8月更文挑战第24天】Apache Kafka是一款高性能分布式消息系统,利用分区机制支持数据并行处理。每个分区含一个Leader处理所有读写请求,并可有多个副本确保数据安全与容错。关键的Leader选举机制保障了系统的高可用性和数据一致性。选举发生于分区创建、Leader故障或被手动移除时。Kafka提供多种选举策略:内嵌机制自动选择最新数据副本为新Leader;Unclean选举快速恢复服务但可能丢失数据;Delayed Unclean选举则避免短暂故障下的Unclean选举;Preferred选举允许基于性能或地理位置偏好指定特定副本为首选Leader。
415 5
|
存储 C++
C/C++中的整数除法运算与汇编指令DIV和IDIV
C/C++中的整数除法运算与汇编指令DIV和IDIV
553 1
|
弹性计算 安全 虚拟化
万字干货分享 | 阿里云CIPU技术解析
2022年6月,阿里云发布了云基础设施处理器CIPU(Cloud  Infrastructure Processing  Unit),将其定义为取代传统CPU的新一代云计算体系架构的核心。在这个全新体系架构下,CIPU向下对数据中心计算、存储、网络等底层基础设施快速云化并进行硬件加速,向上接入飞天云操作系统,将全球数百万台服务器构建为一台超级计算机,实现资源的灵活编排和调度,给用户提供高质量弹性云计算算力集群。
万字干货分享 | 阿里云CIPU技术解析
|
存储 小程序 JavaScript
微信小程序本地存储
微信小程序本地存储
|
监控 Linux
通过msr-tools读取CPU寄存器的值
通过msr-tools工具包可以用来来读取或写MSR寄存器值。 MSR是Model Specific Register的全称。 MSR是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等     1.
7618 0
|
机器学习/深度学习 存储 人工智能
机器学习实战 | AutoML自动化机器学习建模
本篇介绍工具库FLAML。FLAML 由 Microsoft Research 开发,适用于AutoML自动化机器学习建模,构建端到端机器学习流程、解决实际场景问题。
1027 0
机器学习实战 | AutoML自动化机器学习建模
|
Python
【python】bin/dec/hex/bnr进制转换函数及fp32转十六进制
【python】bin/dec/hex/bnr进制转换函数及fp32转十六进制
356 0