Как преобразовать массив формы python (25000, 256,256,3) в (25000,3256566,3), где 3 изображения абсолютно одинаковы? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть массив из 25000 изображений RGB размером 256x256x3 [25000,256,256,3]. Теперь я хочу повторить каждое из этих изображений в 2 раза больше и объединить их так, чтобы выходной массив был на одно измерение выше [25000,3,256,256,3]. Это последняя форма канала.

1 Ответ

0 голосов
/ 18 февраля 2020

Без дополнительных пояснений, я собираюсь предположить, что вы работаете с массивами basi c NumPy. В этом случае вы можете использовать numpy.stack с указанием axis:

my_array = ...
n_copies = 3
replicated_array = np.stack([my_array for _ in range(n_copies)], axis=1)

Полный пример (размеры изменены в иллюстративных целях):

>>> import numpy as np
>>> 
>>> a = np.array([[[0, 0, 1], [0, 1, 0]], [[0, 1, 1], [1, 0, 0]]])  # RGB images of dimension 2x2
>>> a
array([[[0, 0, 1],
        [0, 1, 0]],

       [[0, 1, 1],
        [1, 0, 0]]])
>>> a.shape
(2, 2, 3)
>>> 
>>> a_array = np.stack([a for _ in range(4)])  # Array of 4 images
>>> a_array.shape
(4, 2, 2, 3)
>>>
>>> # Replicate each of these images 9 times more and concatenate them
>>> # such that the output array should be one dimension higher 
>>> np.stack([a_array for _ in range(10)], axis=1).shape
(4, 10, 2, 2, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...