Как отразить массив NxNx3 numpy по диагонали - PullRequest
0 голосов
/ 23 апреля 2020

Как я могу транспонировать трехмерный массив аналогично двумерному массиву, за исключением того, что записи на самом низком уровне являются массивами из трех, а не скалярными значениями?

Это то, что я имею в виду:

M = [[[0,0,0][1,1,1][2,2,2]]
     [[0,0,0][0,0,0][3,3,3]]
     [[0,0,0][0,0,0][0,0,0]]]

N = some_operation(M)

N = [[[0,0,0][0,0,0][0,0,0]]
     [[1,1,1][0,0,0][0,0,0]]
     [[2,2,2][3,3,3][0,0,0]]]

У меня есть пример в коде python, который также показывает, что я имею в виду:

import numpy as np

M = np.array([[[0,0,0],[1,1,1],[2,2,2]],[[0,0,0],[0,0,0],[3,3,3]],[[0,0,0],[0,0,0],[0,0,0]]])
N = np.array([[[0,0,0],[0,0,0],[0,0,0]],[[1,1,1],[0,0,0],[0,0,0]],[[2,2,2],[3,3,3],[0,0,0]]])

print(M)
print('\n\n')
print(M_flipped)

Функция np.transpose() не подходит для моего случая.

Заранее спасибо.

1 Ответ

1 голос
/ 23 апреля 2020

Просто переставьте оси с помощью np.transpose -

N = M.transpose(1,0,2)

Или с np.moveaxis -

N = np.moveaxis(M,0,1)

С np.rollaxis -

N = np.rollaxis(M,1,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...