将整数数组编码为唯一的 int

2024-01-05

我有固定数量的 int 数组,其形式为:

[a,b,c,d,e]

例如:

[2,2,1,1,2]

where a and b可以是 0 到 2 之间的整数,c and d可以是 0 或 1,并且e可以是 0 到 2 之间的整数。

因此有:3 * 3 * 2 * 2 * 3: 108这种形式的可能数组。

我想为每个数组分配一个从 0 到 107 的唯一整数代码。

我被困住了,我想将数组中的每个数字相加,但是两个数组,例如:

[0,0,0,0,1] and [1,0,0,0,0]

都会加到 1。

有什么建议吗?

谢谢。


你可以使用np.ravel_multi_index https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ravel_multi_index.html:

>>> np.ravel_multi_index([1, 2, 0, 1, 2], (3, 3, 2, 2, 3))
65

验证:

>>> {np.ravel_multi_index(j, (3, 3, 2, 2, 3)) for j in itertools.product(*map(range, (3,3,2,2,3)))} == set(range(np.prod((3, 3, 2, 2, 3))))
True

从另一个方向回去:

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

将整数数组编码为唯一的 int 的相关文章

随机推荐

  • 类名中有一个“+”?

    班级名称 MyAssembly MyClass MyOtherClass 问题显然是 作为分隔符 而不是传统的点 它的作用 并查找官方文档 看看其他分隔符是否存在 这就是嵌套类型的表示方式 例如 namespace Foo class Ou
  • ASP.NET API 无法在 Azure 上发布

    我正在尝试将 C API 发布到 azure 我遵循了中的所有步骤本文档 https learn microsoft com en us aspnet core tutorials publish to azure api manageme
  • 对于接近统一的值,浮点数学是否更精确?

    Question 我多次被告知 如果运算的数字接近于浮点运算 则浮点运算具有最高的精度 1 0 或者有时0 1 有没有道理呢 澄清 我所说的 算术 是指诸如a b a b a b 但是也sqrt x 和其他数学函数 具体来说 假设所有变量都
  • Python 中的 CRC16

    如何在Python中计算CRC16 在 Perl 中我会写这样的东西 use Digest CRC crc16 result crc16 str 我如何在Python中做同样的事情 这里有一个计算CRC16的库http pypi pytho
  • 如何检查数组的所有元素是否相同?

    即 验证 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 but not a 0 1 a 0 2 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 a 0 1 谢谢 count ar
  • 如何将字节值转换为小数?

    我正在尝试从文件中加载一些十进制值 但我无法找出获取原始值并将其转换为小数的正确方法 我已将文件读入字节数组 每个四个字节块应该代表一个十进制值 为了帮助解决这个问题 我构建了一个表格 其中说明十进制值 1 到 46 如何表示为四个字节块
  • Visual Studio 调试器跳过断点

    在调试单元测试时 我的 Visual Studio 2008 IDE 的行为非常奇怪 我有一个断点 当我点击它并尝试使用 F10 单步执行时 测试就会结束 如果我在被测试方法内的每一行上设置断点 我最终会得到一个随机断点 而不是下一行的下一
  • 切割频谱图 matplotlib 中未使用的频率

    我有一个采样率为 16e3 的信号 其频率范围为 125 到 1000 Hz 因此 如果我绘制一个频谱图 由于所有未使用的频率 我会得到一个非常小的颜色范围 我尝试通过设置 x 限制来修复它 但这不起作用 有没有办法切断未使用的频率或用 N
  • 达到虚拟实时时间限制(178/120秒)

    我使用的是ubuntu 16版本并运行Odoo erp系统12 0版本 在我的应用程序日志文件中 我看到信息显示 已达到虚拟实时时间限制 178 120 秒 它到底意味着什么以及它会对我的应用程序造成什么损害 另外我如何增加虚拟实时限制 它
  • 无法加载本机 TensorFlow 运行时。原因:未找到图像。我究竟做错了什么?

    在配备四核 I7 和 NVIDIA GeForce GT 650M 的 Macbook Pro 上运行 从 virtualenv 运行 Tensorflow 时收到此错误消息 我做错了什么 我使用的是 protobuf 版本 3 2 0 t
  • 在没有 BindingSource 的情况下使用 BindingNavigator

    我有一个在数据库中完成分页的应用程序 也就是说 检索项目列表的调用包括页码 页面大小 并且将仅返回该页面的数据 例如 ItemCollection items ListAllItems 1 20 page 1 show 20 items p
  • Visual Studio 2010 RC 中的 IntelliSense 冻结

    每次我尝试编写一些内容时 IntelliSense 都会冻结 Visual Studio 我必须等待大约 2 分钟才能显示代码完成列表 我能使用的唯一方法就是完全关闭它 我已经安装了 Microsoft 的最后一个 IntelliSense
  • 如何在 Django 中为(基于类的)通用对象列表创建过滤器表单?

    我正在使用 Django 1 3 的基于类的通用视图来显示图像列表 但我想添加一个过滤器 使用户能够缩小显示结果的范围 我目前的方法有效 但感觉很黑客 class ImageFilterForm ModelForm class Meta m
  • 如何:优化 Symfony 表单的性能?

    我有一个表单 它是我的 ajax 请求的瓶颈 order this gt getDoctrine gt getRepository AcmeMyBundle Order gt find id order order order new Or
  • 在 data.table 中添加具有条件的虚拟对象?

    抱歉问了这么长的问题 我会尽力明确我的目标 我想使用 update 方法在 data table 中添加虚拟对象 就像这已经在此链接中得到回答 https stackoverflow com questions 18881073 creat
  • 如何将字节字符串转换为int?

    如何在Python中将字节字符串转换为int 像这样说 y xcc xa6 xbb 我想出了一个聪明 愚蠢的方法 sum ord c lt lt i 8 for i c in enumerate y xcc xa6 xbb 1 我知道必须有
  • UIScrollView 中缩放核心图形

    当我使用 UIScrollView 中的 UIView 子类进行放大时 我想知道哪种方法是缩放 Core Graphics 绘图的最佳方法 目前 当我放大时 绘图变得有点模糊 我知道这是正确的功能 我只是想知道开发人员如何覆盖它以保持图像清
  • android:textColor 实际上不起作用

    I have an Edittext in my application I have set it s default color to black in the following manner in the XML android t
  • .o、.a 和 .so 文件之间有什么区别?

    I know o是目标文件 a是静态库和 so是动态库吗 它们的物理意义是什么 我什么时候可以使用一些 什么时候不能使用 a是一个 档案 尽管存档可以包含任何类型的文件 但在 GNU 工具链的上下文中 它是一个目标文件库 其他工具链 特别是
  • 将整数数组编码为唯一的 int

    我有固定数量的 int 数组 其形式为 a b c d e 例如 2 2 1 1 2 where a and b可以是 0 到 2 之间的整数 c and d可以是 0 或 1 并且e可以是 0 到 2 之间的整数 因此有 3 3 2 2