使用 numpy 数组左移大量数字

2024-03-22

Python确实可以左移一位大整数

1L << 100
# 1267650600228229401496703205376L

但 NumPy 似乎有一个问题:

a = np.array([1,2,100])
output = np.left_shift(1L,a)
print output 
# array([          2,           4, 68719476736])

有没有办法使用 NumPy 的 left_shift 操作来克服这个问题?单独访问数组元素会产生相同的错误结果:

1L << a[2]
# 68719476736

Python long值与保存的整数类型不同a。具体来说,Pythonlong值不限于 32 位或 64 位,而是可以占用任意数量的内存。

另一方面,NumPy 将创建a作为一个数组int32 or int64整数值。当你左移这个数组时,你会得到一个相同数据类型的数组。内存不足以容纳1 << 100左移的结果会溢出数组中分配的内存,从而产生不正确的结果。

要保存那么大的整数,您必须指定a拥有object数据类型。例如:

>>> np.left_shift(1, a.astype(object))
array([2, 4, 1267650600228229401496703205376L], dtype=object)

object数组可以混合不同类型,包括无限大小的 Pythonlong/整数值。然而,使用同构数据类型 NumPy 数组时,许多性能优势将会丢失object arrays.

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

使用 numpy 数组左移大量数字 的相关文章

随机推荐

  • SQL 存储过程 - 从多个数据库执行

    我的公司使用来自许多客户的数据 并且忽略了记录我们数据库的表和字段所代表的内容 为了帮助解决这个问题 我编写了一些存储过程 这些过程似乎只适用于它们所在的数据库 我希望服务器上有一个存储过程实例 可以在其所有数据库上使用 但不知道如何实现这
  • 在 Idea 中查找对某个对象的所有引用

    Intellij IDEA IDE 是否有快捷键或选项来查找对某个文件的所有引用Class在一个特定的项目中 例如 我创建了自己的Class持有一个String and an int我已经通过该项目进行了参考 该项目相当大 我不想手动搜索每
  • 有没有办法将 python 应用程序编译成静态二进制文件?

    我想做的是将我的代码发送到远程服务器 该服务器可能安装了不同的 python 版本和 或可能没有我的应用程序所需的包 现在为了实现这种可移植性 我必须使用解释器和代码构建可重定位的 virtualenv 这种方法有一些问题 例如 您必须手动
  • [Vue warn]:$attrs 是只读的。 [Vue 警告]:$listeners 是只读的

    我对 Vuejs 比较陌生 每次按下按键时都会收到以下警告 Vue warn attrs is readonly found in gt
  • 用于从 const 映射中读取的惯用 C++

    For an std map
  • Canny Edge 之后的边界检测

    我尝试过 Canny Edge 的开源 Java 实现 我只需要图像的边界 轮廓 但输出中有额外的线条 使用 Canny Edge 后有什么方法可以删除这些线条 是否有其他算法 或者是否有其他方法可以修改程序 使其仅检测轮廓 我试过了thi
  • WSO2 API 管理器端口

    我需要发布为在端口 80 和 443 而不是 8280 和 8243 上运行而开发的所有 API 我如下更改了 axis2 xml 并重新启动了 API Manager 服务器
  • 返回动态对象类型的通用方法

    可能是一个以前被问过的问题 但像往常一样 当你提到通用这个词时 你会得到一千个解释类型擦除的答案 我很久以前就经历过这个阶段 现在对泛型及其使用有了很多了解 但这种情况稍微微妙一些 我有一个代表电子表格中数据单元格的容器 它实际上以两种格式
  • 使用 YouTube Android 播放器 API 时,YouTube 广告永远不会展示

    无论播放器风格或视频是什么 YouTube 广告都不会展示 实际 YouTube 版本 10 18 55 YouTube Android 播放器 API 1 2 1 我记得我在开发应用程序时看到了一些广告 现在经过数百次测试我看不到任何广告
  • 尝试在 ajax 调用中设置 cookie,Laravel

    我试图在 ajax 调用中设置 cookie 但无法让它工作 我知道我需要通过 response gt headers 上的 setCookie 设置它 cookie 变量看起来正确 但浏览器中没有设置 cookie 我的控制器的代码 co
  • jQuery Validate - 仅当选中单选按钮时,才会选中一组复选框中的至少一个

    我正在使用 jquery 验证插件来确保一组三个复选框中至少有一个被选中并且工作正常 但我只想在选中单选按钮 Sim 时验证这些复选框 我不知道该怎么做 Demo http jsfiddle net TnmGr http jsfiddle
  • Kubernetes:使用 kubectl 修改机密?

    如何修改 Kubernetes 中的值secret using kubectl 我用以下方法创建了这个秘密kubernetes create secret generic 但似乎没有办法修改秘密 例如 向其中添加新的秘密值 或者更改其中的秘
  • std::包含自身的容器的变体

    我有一个二进制格式 我正在为其编写编码器和解码器 几乎所有二进制类型都直接映射到基元 除了两种容器类型 列表和映射类型 之外 它们可以包含格式中的任何其他类型 包括它们本身 这些感觉就像他们只是想成为一个 typedefstd varian
  • 如何以编程方式启用 Visual Studio 扩展

    我创建了一个 Visual Studio 扩展并将其打包在 Visual Studio 安装程序中 现在 当我安装安装程序时 vsix 已安装 并且也可以在扩展管理器窗口中看到 但处于禁用状态 我尝试过为扩展添加注册表项等方法 但同样没有用
  • 在 64 位 Python 上使用 sys.platform=='win32' 检查是否安全?

    区分在 Windows 和其他操作系统 通常是 Linux 上运行的 Python 应用程序的通常检查是使用条件 if sys platform win32 但我想知道在过去几年64位Python得到更广泛使用的今天使用安全吗 32 真的意
  • 计算列的时间总和

    我有这张表 table border 1 width 100 tbody tr td Total duration time td td class total duration time td tr tbody table table b
  • 将 Chrome 开发控制台转储到文本文件?

    有时 当我尝试调试用户在使用我的 Chrome 扩展程序 StayFocusd 时遇到的问题时 访问控制台日志会很有用 现在我只是要求他们将日志复制并粘贴给我 但如果我能够以编程方式生成一个文件 他们可以通过电子邮件发送给我 那就更好了 那
  • 函数指针的函数模板专业化

    我有一个清理函数 我只想在 传统 指针类型上运行 我的问题是函数模板 我可以将函数限制为仅指针 但是由于函数指针和常规指针之间的转换规则差异 我遇到了问题 The Sanitize 函数需要针对大量类型运行 其中一些是指针 需要进行清理 其
  • 上传文件 spring boot 所需的请求部分“文件”不存在

    我想为我的 Spring Boot 应用程序添加上传功能 这是我的上传休息控制器 package org sid web import java io BufferedOutputStream import java io File imp
  • 使用 numpy 数组左移大量数字

    Python确实可以左移一位大整数 1L lt lt 100 1267650600228229401496703205376L 但 NumPy 似乎有一个问题 a np array 1 2 100 output np left shift