Сгладить плиточный массив

#python #numpy

#python #numpy

Вопрос:

У меня есть плиточный массив numpy формы (16, 32, 16, 16), то есть каждая плитка имеет размер 16×16 пикселей в сетке шириной 32 плитки и высотой 16.

Отсюда я хочу преобразовать его в 2D-изображение высотой 256 x шириной 512, и я не могу найти правильное заклинание разбиений, срезов и изменений формы, чтобы получить то, что я хочу.

Ответ №1:

Вы можете объединить numpy reshape и transpose, чтобы выполнить эту работу. Я не совсем уверен, какой из трех «16» принадлежит сетке повторений 32×16, но предполагаю, что это первый:

 import numpy as np

data = np.random.random((16, 32, 16, 16))
# put number of repetitions next to respective dimension
transposed_data = np.transpose(data, (0, 2, 1, 3))
# concatenate repeated dimensions via reshape
reshaped_data = transposed_data.reshape((16 * 16, 32 * 16))
print(reshaped_data.shape)
  

Комментарии:

1. Вот и все! Мне не хватало transpose(). Спасибо, Кристиан.