#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(). Спасибо, Кристиан.