大量矩阵的同时转置

4

我有一张尺寸为rows x cols x deps的图像。在这个图像的每一个体素中,都有一个3x3的矩阵,因此我的numpy数组的形状是:(rows, cols, deps, 3, 3)

我知道可以使用 numpy.linalg.inv() 的gufunc版本同时转置所有这些矩阵,这相当棒。

但是,如何同时转置所有的3x3矩阵呢?

1个回答

4
你可以使用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]])

1
请注意,这只会改变数据的展示方式。如果您需要实际上重新排列内存中的数据,则必须进行复制。 - Sven Marnach
谢谢你,Warren。我想那对我有用。如果它行得通的话,我会再仔细检查并接受的。 - NLi10Me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接