Изменить форму из сплющенных индексов в 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
также имеет длину n
img_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]