Изменить форму из сплющенных индексов в Python

У меня есть изображение размером M*N, чьи координаты пикселей были сглажены в одномерный массив в соответствии с кривой заполнения пространства (то есть не классическая растеризация, где я мог бы использовать изменение формы).

Таким образом, я обрабатываю свой одномерный массив (сплющенное изображение) и затем хотел бы преобразовать его в массив M*N (начальный размер).

Пока что я сделал это с помощью цикла for:

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

x и y - координаты пикселей x и y согласно моему сканированию пути.

Тем не менее, мне интересно, как это сделать в уникальной строке кода.

2 ответа

Решение

Если x а также y являются массивами с размером 1 и длинами n, а также img_flat также имеет длину nimg_res является массивом размерности 2 (h, w) такой, что `h*w = n, тогда:

img_res[x, y] = img_flat

Должно хватить

На самом деле это было легко

vec = np.arange(0, seg.size, dtype=np.uint)
img_res[x[vec], y[vec]] = seg[vec]
Другие вопросы по тегам