2016-11-01 4 views
0

предположим, что у нас есть 4-матричная матрица формы (A, B, C, D), f. И мы хотим сделать такой транспонирование, где f_transpose (i, j, k, c) = f (A-i + 1, B-j + 1, c, k). Это связано с backpropagation convnet, применяя conv-оператор для получения градиента conv-слоя. Может кто-нибудь мне помочь?Как сделать транспонирование 4-d массива, определенную как таковое, в numpy

ответ

2

Вы хотите перевернуть первые две оси и переключить последние два. Реверсивный ось может быть сделано с помощью ::-1 среза, и переключение осей numpy.swapaxes:

g = numpy.swapaxes(f, 2, 3)[::-1, ::-1] 
+0

спасибо большое! Это помогает – jack

+0

Еще один вопрос: если я хочу перенести первое измерение между третьим и четвертым измерениями? Должен ли я использовать swapaxes два раза или есть ли какое-нибудь однослойное решение? – jack

+0

@jack Я предполагаю, что это будет: 'np.transpose (f, (1,2,0,3))'. – Divakar