python 使用 numpy 进行位移

2024-03-29

我正在使用 64 位无符号整数,并在位移后比较该值,然后再解码其余位值。 我正在迭代数百万个值并尝试最大程度地减少处理时间。

问题是 uint64 和 numpy-uint64 都不支持位移位。我试图避免使用 int64 以避免负值。

示例数据: 0x8204000000000080 移位后(word>> 60): =-8 #but 与 0x8 比较

循环一百万次并查看需要多长时间,发现在所有方法中,“>>”移位运算符是最方便的,是调用 abs() 函数的下一个最佳选项。对此有没有更好更方便的解决方案呢?

循环代码:

import numpy as np
import time

start_time= time.time()
for i in range(1000000):
    x= np.int64(-1)
    x=np.right_shift(x,60)
print (time.time()-start_time)

start_time= time.time()
for i in range(1000000):
    x= np.uint64(-1)
    x=int(x/(2**60))
print (time.time()-start_time)

start_time= time.time()
for i in range(1000000):
    x= np.int64(-1)
    x=abs(x>>60)
print (time.time()-start_time)

start_time= time.time()
for i in range(1000000):
    x= np.int64(-1)
    x= x>>60
print (time.time()-start_time)

Output:

2.055999994277954
3.1540000438690186
0.619999885559082
0.5810000896453857

问题是,当您将移位应用于数组标量时,NumPy 尝试生成一个可以保存两种输入数据类型的所有值的输出类型(使用 Python int 转换为 int32 或 int64)。没有任何整数数据类型可以同时保存 uint64 和有符号数据类型的所有值,并且浮点数在这里也不是一个选项。

当一个操作数是数组而另一个是标量(这里是 Python int)时,NumPy 尝试将标量填充到更小的数据类型中 https://stackoverflow.com/questions/45949263/numpy-casting-float32-to-float64/45949567#45949567,对于大多数移位操作来说,这意味着移位量被转换为 int8 或 uint8,具体取决于另一个操作数是否有符号。 uint64 和 uint8 都适合 uint64。

您必须将移位量转换为无符号整数:

>>> numpy.uint64(-1) >> 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ufunc 'right_shift' not supported for the input types, and the inputs
 could not be safely coerced to any supported types according to the casting rul
e ''safe''
>>> numpy.uint64(-1) >> numpy.uint64(1)
9223372036854775807
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 使用 numpy 进行位移 的相关文章

  • 如何在 QTableView 标题中单击鼠标右键单击上下文菜单?

    下面的示例代码 很大程度上受到here http www saltycrane com blog 2007 12 pyqt 43 qtableview qabstracttablemodel 有一个右键单击上下文菜单 当用户单击表中的单元格
  • Python Numpy Reshape错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误 数组 x 的形状为 6 10 300 我想将其重塑为 6 3000 我正
  • 如何在seaborn热图标签中使用科学计数法?

    我正在尝试在 python 中使用seaborn 获取热图 不幸的是 即使数字非常大 它也没有使用科学记数法 我想知道是否有任何简单的方法可以转换为科学记数法或任何其他合理的格式 这是显示问题的一段代码 import seaborn as
  • 绝对导入不起作用,但相对导入起作用

    这是我的应用程序结构 foodo setup py foodo init py foodo py models py foodo foodo foodo py从导入类models py module from foodo models im
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • 当我从本地计算机更改为虚拟主机时,从 python 脚本调用 pdftotext 不起作用

    我编写了一个小的 python 脚本来解析 提取 PDF 中的信息 我在本地机器上测试了它 我有 python 2 6 2 和 pdftotext 版本 0 12 4 我正在尝试在我的虚拟主机服务器 dreamhost 上运行它 它有 py
  • dask apply:AttributeError:“DataFrame”对象没有属性“name”

    我有一个参数数据框 并对每一行应用一个函数 该函数本质上是几个 sql queries 和对结果的简单计算 我正在尝试利用 Dask 的多处理 同时保持结构和界面 下面的例子有效并且确实有显着的提升 def get metrics row
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • 同一台机器上有多个Python版本?

    Python 网站上是否有关于如何在 Linux 上的同一台计算机上安装和运行多个版本的 Python 的官方文档 我可以找到无数的博客文章和答案 但我想知道是否有 标准 官方方法可以做到这一点 或者这一切都取决于操作系统 我认为它是完全独
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • 如何处理 Tkinter 中的窗口关闭事件?

    如何在 Python Tkinter 程序中处理窗口关闭事件 用户单击 X 按钮 Tkinter 支持一种称为协议处理程序 http web archive org web 20201111215134 http effbot org tk
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 避免“散点/点/蜂群”图中的数据点重叠

    使用绘制点图时matplotlib 我想偏移重叠的数据点以使它们全部可见 例如 如果我有 CategoryA 0 0 3 0 5 CategoryB 5 10 5 5 10 我想要每一个CategoryA 0 数据点并排设置 而不是彼此重叠
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • 当训练和测试的特征数量不同时,如何处理生产环境中的One-Hot Encoding?

    在做某些实验时 我们通常在 70 上进行训练 在 33 上进行测试 但是 当您的模型投入生产时会发生什么 可能会发生以下情况 训练集 Ser Type Of Car 1 Hatchback 2 Sedan 3 Coupe 4 SUV 经过

随机推荐

  • 导出导入的模块

    我有两个 javascript 模块 如下所示 inner mod js export function myFunc mod js import as inner from inner mod 我想出口myFunc from mod js
  • Typescript 用循环动态创建数组

    我正在创建一个模拟类 用于为我的 Angular2 TypeScript 项目生成示例数据 我仍然是编程初学者 并且对有关 TypeScript 的可用信息感到困惑 我的问题 我想创建 100 个项目并将它们保存在一个数组中 这 100 个
  • 如何创建表单类的新实例,然后将其作为 acDialog 框打开(暂停其他代码)?

    Problem 我有一个复杂的搜索表单 需要多次 同时 打开 以允许用户同时进行多个搜索 我发现可以使用以下命令打开表单的实例 因为它是一个类 Option Compare Database Option Explicit Array to
  • Plotly R - 错误“`line.width`当前不支持多个值。”

    当我运行以下命令时 interactive plot lt plot ly data vep wes aff rare summary x n y mean af type scatter mode markers hoverinfo te
  • 为什么 Android 不使用更多的枚举?

    我开始非常喜欢在代码中使用 C 和 Java 枚举 原因如下 它们比整数 字符串或布尔标志集更加类型安全 它们会产生更具可读性的代码 将枚举设置为无效值比 int 或字符串更困难 它们可以轻松发现变量或参数的允许值 我读到的所有内容都表明它
  • 分支/更改未合并,尽管 Gerrit 声称,它是

    每次我都看到merged关于我在 Gerrit 中的变化的状态 我确实git pull origin 我可以清楚地看到 我的更改 分支实际上尚未合并到 master 中 请检查我的 Gerrit 工作流程并告诉我 我做错了什么或缺少什么 在
  • 用于清除 Git Bash 屏幕(包括输出缓冲区)的命令

    Git 中是否有任何命令可以清除屏幕 例如在window命令行中执行了很多代码后 如果输入cls 那么它会清除之前的所有代码 所以我想要 Git 中相同类型的功能 所以任何人都可以告诉我命令名称 实际上你正在寻找一个Unix用户环境命令 c
  • Firefox 中 Window.getCompulatedStyle 未实现接口 Element 错误

    我想将一些数据附加到 HTML 元素 因此我使用了以下代码 bookListDiv append data HTMLString 一切都正常 但是我想在显示此元素时添加淡入动画 因此我将其修改为 data HTMLString hide a
  • 是否可以对任何文本分类应用 PCA?

    我正在尝试用 python 进行分类 我正在对网页使用朴素贝叶斯多项式NB分类器 将数据从网络检索到文本 稍后我对此文本进行分类 网络分类 现在 我尝试对这些数据应用 PCA 但 python 给出了一些错误 我的朴素贝叶斯分类代码 fro
  • Spark 选择 RDD 中的最高值

    原始数据集是 numbersofrating title avg rating newRDD 3 monster 4 4 minions 3D 5 我想在newRDD中选择前N个avg ratings 我使用以下代码 它有一个错误 sele
  • 模拟对象返回带有 Moq 的模拟列表

    我正在尝试测试以下代码 public void CleanUp List
  • 直接读取程序计数器

    Intel CPU 上的程序计数器可以在内核模式或其他模式下直接读取 即没有 技巧 吗 不 EIP IP 无法直接访问 但在位置相关代码中 它是链接时间常量 因此您可以使用附近 或远处 的符号作为立即数 mov eax nearby lab
  • 使用python(windows)创建两个子进程

    使用Python编程语言完成以下任务 创建两个进程 我们称之为 P1 和 P2 P1应该打印 我是P1 P2应该打印 我是P2 主进程 创建 P1 和 P2 的进程 应该等待它们 然后 P1和P2完成后 主进程应该打印 我是主进程 两个进程
  • 在特定行之后添加行

    我正在尝试将特定行添加到文件中的特定区域 我正在使用这个 new file open file txt r for line in new file if line Include below line line nIncluded tex
  • Find() 与Where().FirstOrDefault()

    我经常看到人们使用Where FirstOrDefault 进行搜索并获取第一个元素 为什么不直接使用Find 对方有优势吗 我看不出有什么不同 namespace LinqFindVsWhere class Program static
  • 使用正则表达式修剪电话号码

    可能是一个简单的正则表达式问题 如何从电话号码中删除除前导 之外的所有非数字 i e 012 3456 gt 0123456 1 234 56789 gt 123456789
  • 为什么模式匹配一​​个单词而有两个相同的单词?

    请看一下这个 如你所见 只有one匹配于regex101 但浏览器匹配two相同的单词 所以为什么regex101无法匹配第二个单词 无论如何我需要匹配这两个词 或更多 如果存在的话 注意到它与以下内容无关g旗帜 因为我在小提琴中使用过它
  • CreateProcessAsUser 和 LogonUser 无密码

    使用 WTSGetActiveConsoleSessionId 和 WTSQueryUserToken 我知道作为 SYSTEM 运行的服务可以在当前桌面上启动应用程序 http blog dcuktec com 2009 05 pytho
  • 防止 Azure B2C 自定义策略中的电子邮件更改

    有没有办法防止密码重置期间更改电子邮件 有密码恢复的标准政策 但我不喜欢在那里更改电子邮件 该电子邮件用作与其他应用程序集成的 ID 密码重置期间更改电子邮件不会更改用户的实际电子邮件 如果用户验证电子邮件但随后意识到这不是他们想要重置密码
  • python 使用 numpy 进行位移

    我正在使用 64 位无符号整数 并在位移后比较该值 然后再解码其余位值 我正在迭代数百万个值并尝试最大程度地减少处理时间 问题是 uint64 和 numpy uint64 都不支持位移位 我试图避免使用 int64 以避免负值 示例数据