Как транспонируется массив 3D numpy - PullRequest
1 голос
/ 09 апреля 2020

Я учу Numpy в этом перерыве :-D, и я сегодня наткнулся на транспонирование. Я хорошо понимаю транспонирование 2D-матрицы, но мне было трудно разобраться с транспозицией 3D-матрицы (массива). Может кто-нибудь объяснить мне, как a4 был подвергнут .transpose() в следующем фрагменте? Конечно, я могу найти образец здесь, но я хочу знать общий принцип транспонирования, чтобы я мог применить его к матрице любого измерения. Любая помощь высоко ценится.

In [84]: a4 = np.random.randint(12,size=(3,2,3))
         a4
         array([[[ 2, 10,  8],
                 [ 1,  4,  9]],

                [[ 9, 10,  2],
                 [10,  5,  9]],

                [[ 0,  5,  2],
                 [ 6,  8,  2]]])

In [85]: a4.T
         array([[[ 2,  9,  0],
                 [ 1, 10,  6]],

                [[10, 10,  5],
                 [ 4,  5,  8]],

                [[ 8,  2,  2],
                 [ 9,  9,  2]]])

1 Ответ

2 голосов
/ 09 апреля 2020

Что помогает мне думать о транспонировании, так это осознание того, что массив форм переворачивается как операция зеркального отображения при транспонировании. См. Ниже:

a2 = np.random.randint(12,size=(3,2))
print('{} <=> {}'.format(a2.shape, a2.T.shape))

a3 = np.random.randint(12,size=(3,2,4))
print('{} <=> {}'.format(a3.shape, a3.T.shape))

a4 = np.random.randint(12,size=(3,2,4,5))
print('{} <=> {}'.format(a4.shape, a4.T.shape)) 

приводит к

(3, 2) <=> (2, 3)
(3, 2, 4) <=> (4, 2, 3)
(3, 2, 4, 5) <=> (5, 4, 2, 3)
...