扁平化空間索引向高維空間映射的規(guī)則
在圖形圖像處理、數值計算、機器學習等領域,常常會遇到由扁平空間索引向高維空間轉換計算的問題,其核心思想就是:高維度索引位置取決于扁平索引和所有低緯度索引空間之積的倍數。
通用規(guī)則:
對于 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是合理數值的前提下,特別是對于某些高性能需求的場景。