检查位掩码的特定位

2024-04-09

我正在与Bitmasks in python。据我所知,这些是整数数组,当它们解压缩为二进制格式时,它们会告诉您数组中给定元素的 32 位中的哪一个被设置 (=1)。

我想知道检查数组的任何元素是否设置了 4 个特定位的最快方法。我不关心其余的。我已经尝试了以下解决方案,但它对于我的目的来说不够快:

def detect(bitmask, check=(18,22,23,24), bits=32):
    boolmask = np.zeros(len(bitmask), dtype=bool)
    for i, val in enumerate(bitmask):    
        bithost = np.zeros(bits, dtype='i1')
        masklist = list(bin(val)[2:])
        bithost[:len(masklist)] = np.flip(masklist,axis=0)
        if len(np.intersect1d(np.nonzero(bithost)[0] ,check)) != 0:
            boolmask[i] = True        
        else: 
            boolmask[i] = False
    if any(boolmask):
        print("There are some problems")
    else:
        print("It is clean")

例如,如果给定bitmask包含整数 24453656(1011101010010001000011000 in binary),函数的输出detect由于设置了位 22,因此将是“存在一些问题”:

bit: ...  20, 21, 22, 23, 24,...  
mask: ... 0,  0,  1,  0,  0,...

关于如何提高性能有什么想法吗?


整数只不过是计算机中的位序列。

所以,如果你得到整数,假设:333 对于计算机来说是一个位序列 101001101。它不需要任何解包。它is bits.

因此,如果掩码也是整数,则不需要任何解包,只需对其进行按位运算即可。查看维基百科 https://en.wikipedia.org/wiki/Bitwise_operation了解它们如何工作的详细信息。

为了检查整数 abc 中是否设置了任何位 xyz,您可以执行以下操作:(abc & xyz) > 0。如果您绝对需要检查掩码是否为位元组,则可以进行一些打包,如下所示:

def detect(bitmask,check=(18,22,23,24)):
    checkmask=sum(2**x for x in check)
    if (bitmask & checkmask) > 0:
        print "There are some problems"
    else:
        print "Everything OK"

请注意,位掩码以基于 0 的位索引开头。第一个位是位 0。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查位掩码的特定位 的相关文章

  • Pyenv 无法在 Cygwin 上安装 python: ModuleNotFoundError: No module named '_ctypes'

    我正在尝试设置 Cygwin 环境以使用 pyenv 来管理 python 版本 我没有管理员权限 所以我使用以下命令运行设置 no admin flag 我使用 Cygwin 包管理器应用程序解决了一些依赖关系 但我被困在了这一点上 Mo
  • 如何在 Django 管理中以表格格式显示添加模型?

    我刚刚开始使用 Django 编写我的第一个应用程序 为我的家庭设计的家务图表管理器 在本教程中 它向您展示了如何添加相关对象 http docs djangoproject com en dev intro tutorial02 cust
  • 创建一个打开文件并创建字典的函数

    我有一个正在处理的文件 我想创建一个读取文件并将内容放入字典中的函数 然后该字典需要通过 main 函数传递 这是主程序 它无法改变 我所做的一切都必须与主程序配合 def main sunspot dict file str raw in
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • InvalidArgumentException:消息:无效参数:“using”必须是字符串

    我对 python 很陌生 试图创建可重用的代码 当我尝试通过传递 Login 类下使用的所有参数来调用 test main py 中的 Login 类和函数 login user 时 我收到错误 InvalidArgumentExcept
  • 如何使用 msgpack 进行读写?

    如何序列化 反序列化字典data with msgpack http msgpack org The Python 文档 http msgpack python readthedocs io en latest badge latest似乎
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • psutil:测量特定进程的CPU使用率

    我正在尝试测量进程树的 cpu 使用率 目前获取进程 没有子进程 的 cpu usage 就可以了 但我得到了奇怪的结果 import psutil p psutil Process PID p cpu percent 还给我float g
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • django 组合对两个不同基本模型的查询

    我有两个不同的查询集 我想将两个查询集合并 q1 tbl nt 123 objects values list id value geometry filter restriction height exclude condition id
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见

随机推荐

  • 方法和可选参数

    我在 Apple 文档中读到 我们可以在 Objective C 方法调用中使用可选参数 Apple 文档中的示例 采用可变数量参数的方法也是可能的 尽管它们有点罕见 额外的参数用逗号分隔 在方法名称末尾之后 与冒号不同 逗号不是 被视为名
  • 在 vb.net 中进行数学计算,就像在 javascript 中进行 Eval 一样

    有没有什么方法可以解析 vb net 中的字符串 例如内置方法 可以像 Eval 一样进行数学运算 例如 3 7 3 5 作为字符串将返回 2 我不是要求你为我编写这个代码 我只是想知道是否有built in这样做的方法 如果没有我会自己编
  • 将输出从 Python 记录器重定向到 tkinter 小部件

    花了一些时间重定向 stdout 并将输出记录到 tkinter 文本小部件后 我决定需要一些帮助 我的代码如下 usr bin env python from Tkinter import import logging from thre
  • Flask的send_file和send_from_directory有什么区别?

    我仍然不清楚何时使用send file什么时候send from directory 我在受保护的文件夹中有一个文件 我可以通过这两种方法访问该文件 所以也许有人有一个例子可以清楚地表明应该使用哪个函数 app route sfile
  • 无法在 android 中对 ImageViews 使用 srcCompat

    我正在使用设计支持库 23 2 我已在 build gradle 中添加了这些行 因为我的 Gradle 插件版本为 1 5 defaultConfig applicationId com abc xyz minSdkVersion 16
  • Spring Boot GS:ConnectionFactory 的 ComponentScan 和 ClassNotFoundException

    我正在玩 Spring Boot 入门指南 但自动配置失败 我得到 java lang ClassNotFoundException javax jms ConnectionFactory 看来这是由于 Application 类的位置所致
  • 安装以太坊时出错:软件包“ethereum”没有安装候选者

    我按照本文中的步骤在 Ubuntu 17 10 上安装以太坊 https medium com mvmurthy full stack hello world voting ethereum dapp tutorial part 2 30b
  • 在 Android 中动态创建/删除按钮

    首先 如果这个答案已经在这里 我很抱歉 因为我已经搜索了几个星期 但还没有找到任何东西 我正在开发一个 Android 应用程序 它需要允许用户创建和删除按钮 我知道如何通过将按钮添加到 XML 文件并在 JAVA 文件中创建其功能来通常静
  • package.json 中的代理不影响 fetch 请求

    我正在尝试使用 React 从开发服务器获取一些数据 我正在运行客户端localhost 3001和后端port 3000 获取请求 const users fetch api users users then err res gt con
  • 将值设置为 Java 15 记录中的属性之一

    我在代码中使用Java 15预览功能记录 并定义记录如下 public record ProductViewModel String id String name String description float price 在控制器级别我
  • C++20 中是否有一个浮点数包装器,可以让我默认飞船运算符?

    我正在观看 使用 C 20 三路比较 Jonathan M ller Meeting C 2019 演讲 其中提到了包含浮点成员的类的问题 问题源于这样一个事实 涉及 NaN 的 IEEE 754 比较很奇怪 并且不提供总排序 Talk 提
  • 使用 tmap tm_bubble 添加固定大小的中断

    我正在尝试创建一个 tmap 气泡图 其中大小和颜色美观具有相同的固定中断 设置style fixed and breaks c Inf seq 10 10 by 2 5 Inf 正在为颜色变量生成所需的结果 但大小变量保持不变 我正在处理
  • 在同一个类中使用两个 UIPickerView

    我为第一个 UIPickerView 编写了这段代码 void viewDidLoad NSURL url NSURL URLWithString http localhost 8080 Data resources converter c
  • C#:通过 200 万个对象进行内存高效搜索,无需外部依赖

    我需要能够搜索集合大约 200 万个 C 项目 搜索应该可以在多个字段上进行 简单的字符串匹配就足够了 使用外部依赖项 例如数据库不是一个选择 但是使用内存数据库就可以了 主要目标是做到这一点内存效率高 集合中的类型非常简单 没有长字符串
  • 如何找到 toast 小部件的布局参数?

    我喜欢的布局toastwidget非常多 这意味着圆角 透明度 浅灰色边框 有没有办法查看像这样的android标准小部件的布局参数toast 我想定义一个TextView具有相同的布局参数 布局可以在下面找到 SDKBASEDIR pla
  • 如何在 ASP.NET C# 中发送电子邮件

    我对这个很陌生ASP NET http en wikipedia org wiki ASP NETC 区域 我计划通过 ASP NET C 发送邮件 这是SMTP http en wikipedia org wiki Simple Mail
  • 使用 Google+ API 获取用户凭据

    我正在尝试包括谷歌登录在我的android应用程序中使用谷歌 API 我可以从用户那里获取帐户详细信息 但登录后我会得到null when 请求用户名使用调用 Plus PeopleApi getCurrentPerson mGoogleA
  • 错误QApplication:没有这样的文件或目录

    我已经安装了具有 Qt 的 C SDK 但是当我尝试编译链接 QApplication 的代码时 它给了我错误 Error QApplication no such file or directory 我如何链接这些库 我搜索目录 有一个名
  • javascript 文件缓存的依据是什么?

    javascript 文件在什么基础上被缓存 假设我从一个网站加载一个名为 m script js 的文件 而在另一个网站上我使用相同的名称 m script js 但内容不同 浏览器会获取新的名称 还是只是查看名称并从缓存中加载它 两个
  • 检查位掩码的特定位

    我正在与Bitmasks in python 据我所知 这些是整数数组 当它们解压缩为二进制格式时 它们会告诉您数组中给定元素的 32 位中的哪一个被设置 1 我想知道检查数组的任何元素是否设置了 4 个特定位的最快方法 我不关心其余的 我