Python 大型矩阵阵列的同时矩阵转置
我有一个尺寸为行x cols x deps的图像。在这幅图像的每个体素中,都有一个3x3矩阵,因此我的numpy数组的形状是:rows,cols,deps,3,3 我知道我可以使用numpy.linalg.inv的gufunced版本同时反转所有这些矩阵;这真是太棒了 但是,如何同时转置所有3x3矩阵?您可以使用来交换最后两个维度:Python 大型矩阵阵列的同时矩阵转置,python,image-processing,numpy,transpose,Python,Image Processing,Numpy,Transpose,我有一个尺寸为行x cols x deps的图像。在这幅图像的每个体素中,都有一个3x3矩阵,因此我的numpy数组的形状是:rows,cols,deps,3,3 我知道我可以使用numpy.linalg.inv的gufunced版本同时反转所有这些矩阵;这真是太棒了 但是,如何同时转置所有3x3矩阵?您可以使用来交换最后两个维度: In [17]: x = np.random.randint(0, 99, (4,4,4,3,3)) In [18]: x[0,0,0] Out[18]: ar
In [17]: x = np.random.randint(0, 99, (4,4,4,3,3))
In [18]: x[0,0,0]
Out[18]:
array([[21, 93, 83],
[57, 0, 96],
[43, 37, 22]])
In [19]: x[1,1,2]
Out[19]:
array([[59, 0, 27],
[85, 97, 19],
[91, 52, 68]])
In [20]: y = x.swapaxes(-1,-2)
In [21]: y[0,0,0]
Out[21]:
array([[21, 57, 43],
[93, 0, 37],
[83, 96, 22]])
In [22]: y[1,1,2]
Out[22]:
array([[59, 85, 91],
[ 0, 97, 52],
[27, 19, 68]])
请注意,这只会更改数据的视图。如果你真的需要重新排列内存中的数据,你必须复制一份。谢谢沃伦,我认为这对我来说应该是可行的。我会再检查一遍,如果成功的话就接受。