从 Python 中的扁平索引重塑

Reshape from flattened indices in Python

我有一个大小为 M*N 的图像,其像素坐标已根据 space 填充曲线展平为一维数组(即,不是我可以使用重塑的经典光栅化)。

因此,我处理了我的一维数组(展平图像),然后我想将其重塑为 M*N 数组(初始大小)。

到目前为止,我已经使用 for 循环完成了此操作:

for i in range(img_flat.size):
    img_res[x[i], y[i]] = img_flat[i]

x 和 y 是根据我的路径扫描的 x 和 y 像素坐标。

但是,我想知道如何在独特的代码行中做到这一点。

其实很简单:

vec = np.arange(0, seg.size, dtype=np.uint)
img_res[x[vec], y[vec]] = seg[vec]

如果 xy 是维度为 1 且长度为 n 的 numpy 数组,并且 img_flat 的长度也为 n img_res是一个维数为 2 (h, w) 的 numpy 数组,使得`h*w = n,则:

img_res[x, y] = img_flat

应该够了