Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大型矩阵阵列的同时矩阵转置_Python_Image Processing_Numpy_Transpose - Fatal编程技术网

Python 大型矩阵阵列的同时矩阵转置

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

我有一个尺寸为行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]: 
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]])

请注意,这只会更改数据的视图。如果你真的需要重新排列内存中的数据,你必须复制一份。谢谢沃伦,我认为这对我来说应该是可行的。我会再检查一遍,如果成功的话就接受。