多维numy矩阵的旋转与翻转

2024-09-28 18:56:45 发布

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

我有一个纽比矩阵“mat”,它是888*100*100。这表示100×100网格的888个样本。在

我想对矩阵中的每个网格应用一个变换。在

我试过了np.rot90型(mat),但它将尺寸更改为100*888*100。在

有没有办法一次完成转型?或者,我需要迭代每个网格并分别转换它吗?谢谢。在


Tags: 网格尺寸np矩阵样本mat办法rot90
2条回答

在np.rot90型旋转前两个维度,因此可以交换轴0和2,旋转并交换回原位以达到所需的效果。Python迭代可能会比较慢,因为numpy是一个高度优化的低级代码库,所以通常最好使用内置的。在

In[9]: import numpy as np
In[10]: x = np.arange(3*2*2).reshape(3, 2, 2)
In[11]: x
Out[11]: 
array([[[ 0,  1],
        [ 2,  3]],

       [[ 4,  5],
        [ 6,  7]],

       [[ 8,  9],
        [10, 11]]])
In[12]: np.rot90(x.swapaxes(0, 2)).swapaxes(0, 2)
Out[12]: 
array([[[ 2,  0],
        [ 3,  1]],

       [[ 6,  4],
        [ 7,  5]],

       [[10,  8],
        [11,  9]]])

下面是一个使用^{}flipping/reversing最后一个轴的方法-

mat.transpose(0,2,1)[...,::-1]

运行时测试-

^{pr2}$

相关问题 更多 >