У меня есть 4d-массив x
, для которого я хочу пройти через первую ось, изменить этот 3d-массив и добавить этот модифицированный массив в новый 4d-массив y
.Правильный способ «добавить» многомерные массивы numpy?
В настоящее время я делаю что-то вроде:
xmod = modify(x[0, :, :, :])
y = xmod.reshape(1, x.shape[1], x.shape[2], x.shape[3])
for i in range(1, x.shape[0]):
xmod = modify(x[i, :, :, :])
y = np.vstack((y, xmod))
Я угадываю там amuch уборщик, чтобы сделать это. Как?
Петли уровня Python и * особенно * добавляются в цикл, являются эффектно медленными способами использования NumPy. Можете ли вы сделать 'modify' работать в векторном виде на всех' x'? – user2357112
Я бы с удовольствием, но я не знаю, смогу ли я. Моя модификация действительно представляет собой изменение размера изображения: 'xmod = scipy.misc.imresize (x [i,:,:, 0], 1.3)'. Я не думаю, что «imresize» может быть векторизован, но, может быть, я ошибаюсь? – Fequish
. Лучше всего создать пустой массив из соответствующего конечного размера, а затем срез - назначить результаты в нем по одному. – user2357112