Вы можете предварительно выделить пустой массив и заполнить его элементами train_x
(я полагаю, что функция numpy.stack()
делает то же самое за сценой):
import numpy as np
train_x = [np.random.randn(50, 50, 3) for _ in range(1000)] #dummy x_train
big_arr = np.empty([len(train_x), 50, 50, 3])
big_arr[:,...] = train_x[:]
В этом случае причина, по которой я выбираю этоСпособ против stack
заключается в его гибкости.Может быть невозможно иметь как train_x
, так и big_arr
в памяти (может вызвать переполнение памяти).Поэтому, если вы обязаны иметь массив в форме (19929,50,50,3)
в памяти для обработки, попробуйте сделать это:
big_arr = np.empty([len(train_list), 50, 50, 3])
for i, image in enumerate(train_list):
big_arr[i,:,:,:] = skimage.data.imread(image) # read directly from hard disc and fill the array