从 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]
如果 x
和 y
是维度为 1 且长度为 n
的 numpy 数组,并且 img_flat
的长度也为 n
img_res
是一个维数为 2 (h, w)
的 numpy 数组,使得`h*w = n,则:
img_res[x, y] = img_flat
应该够了
我有一个大小为 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]
如果 x
和 y
是维度为 1 且长度为 n
的 numpy 数组,并且 img_flat
的长度也为 n
img_res
是一个维数为 2 (h, w)
的 numpy 数组,使得`h*w = n,则:
img_res[x, y] = img_flat
应该够了