如何转换三维numpy阵列

2024-10-01 13:25:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这个课间休息时学习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]]])

Tags: innumpysizenp模式矩阵random数组
1条回答
网友
1楼 · 发布于 2024-10-01 13:25:39

帮助我思考转置的是,当转置时,形状数组像镜像操作一样翻转。见下文:

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)

相关问题 更多 >