扁平化空间索引向高维空间映射的规则
在图形图像处理、数值计算、机器学习等领域,常常会遇到由扁平空间索引向高维空间转换计算的问题,其核心思想就是:高维度索引位置取决于扁平索引和所有低纬度索引空间之积的倍数。
通用规则:
对于 N 维数组,维度大小为 [d1, d2, ..., dN],扁平化索引为 idx:
从最低维度(dN)开始计算
第 N 维索引 = idx % dN
对于第 n 维(n < N):
idx = idx ÷ (dn+1 * dn+2 * ... * dN) (向下取整)
第 n 维索引 = idx % dn
二维例子:3x4 数组,扁平化索引 5
维度:[3, 4]
列索引(第2维)= 5 % 4 = 1
行索引(第1维)= (5 ÷ 4) % 3 = 1 % 3 = 1
结果:[1, 1](第2行,第2列,从0开始计数)
三维例子:2x3x4 数组,扁平化索引 15
维度:[2, 3, 4]
第3维索引 = 15 % 4 = 3
临时索引 = 15 ÷ 4 = 3
第2维索引 = 3 % 3 = 0
临时索引 = 3 ÷ 3 = 1
第1维索引 = 1 % 2 = 1
结果:[1, 0, 3]
注意:第 n 维索引 = idx % dn的计算不是必须的,特别是已知idx是合理数值的前提下,特别是对于某些高性能需求的场景。