我有一张尺寸为rows x cols x deps
的图像。在这个图像的每一个体素中,都有一个3x3的矩阵,因此我的numpy数组的形状是:(rows, cols, deps, 3, 3)
。
我知道可以使用 numpy.linalg.inv()
的gufunc版本同时转置所有这些矩阵,这相当棒。
但是,如何同时转置所有的3x3矩阵呢?
我有一张尺寸为rows x cols x deps
的图像。在这个图像的每一个体素中,都有一个3x3的矩阵,因此我的numpy数组的形状是:(rows, cols, deps, 3, 3)
。
我知道可以使用 numpy.linalg.inv()
的gufunc版本同时转置所有这些矩阵,这相当棒。
但是,如何同时转置所有的3x3矩阵呢?
swapaxes
方法 来交换最后两个维度: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]])