Как конвертировать 4d массив изображений в 3d? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть 4d массив фигур (80,8,8,3). Это 80 изображений 8х8, 3 канала. Я хочу сделать из них одно большое изображение с 8 строками и 10 столбцами. Как я могу преобразовать 4d массив в 3d с изменением формы до нужной формы? Я попытался np.concatenate(images[i:i + 10,:,:,:], но по какой-то причине это не сработало.

1 Ответ

0 голосов
/ 08 октября 2019

Если вы просто хотите их увидеть, вы можете составить график, не используя ваши данные:

data = np.random.random((80, 8, 8, 3))

import matplotlib.pyplot as plt

fig, axs = plt.subplots(nrows=8, ncols=10, figsize=(10, 8))
for ax, img in zip(axs.ravel(), data):
    ax.imshow(img)
    ax.axis('off')

В результате:

matplotlib output

Если вы действительно хотите изменить его форму, вы можете сделать это:

n, h, w, c = data.shape
data_new = (data.reshape(8, 10, h, w, c)
                .swapaxes(1,2)
                .reshape(h*8, w*10, c))

Чтобы отобразить этот результат:

plt.figure(figsize=(10, 8))
plt.imshow(data_new)
plt.axis('off')

matplotlib output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...