Numba 中的笛卡尔积

Sim*_*mon 8 python cartesian-product python-itertools numba

我的代码使用如下列表的笛卡尔积:

import itertools

cartesian_product = itertools.product(list('ABCDEF'), repeat=n)
Run Code Online (Sandbox Code Playgroud)

n可以是 0 到 4 之间的任意值。

numba目前不支持itertools.product. 到目前为止我还无法想出一个可行的替代方案。欢迎任何建议!

use*_*own 1

笛卡尔积可以看作长度为 1 到 5(0 到 4?)的以 6 为底的数字,例如 331 或 40302。

可能的组合数量为 6^5,从 00000(基数 6)到 55555(基数 6)或 AAAAA 到 FFFFF。

因此,如果您确实需要它们作为列表,请生成从 0 到 6^5-1 的数字(十进制 7775),并将每个数字映射到相应的代码。

例如,对于十进制数 127,模 6 为 1。 127 / 6 => 21, 21 % 6 => 3 21 / 6 => 3 (3 < 6,我们完成了)。

因此,我们的 6 进制数是 331,对于映射 A:0、B:1、... F:5,331 是 DDB。

根据您的用例,构建整个列表一次会更有效。对于非常大的笛卡尔积,仅使用从数字到元素的映射并了解列表的最大索引 (m^n) 可能会更有效。