我有固定数量的以下形式的 int 数组:
[a,b,c,d,e]
例如:
[2,2,1,1,2]
其中a
和b
可以是0到2的整数,c
和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
:
>>> 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)
关于python - 将整数数组编码为唯一的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411962/