2024-09-28 18:56:45 发布
网友
我有一个纽比矩阵“mat”,它是888*100*100。这表示100×100网格的888个样本。在
我想对矩阵中的每个网格应用一个变换。在
我试过了np.rot90型(mat),但它将尺寸更改为100*888*100。在
有没有办法一次完成转型?或者,我需要迭代每个网格并分别转换它吗?谢谢。在
在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最后一个轴的方法-
flipping/reversing
mat.transpose(0,2,1)[...,::-1]
运行时测试-
在np.rot90型旋转前两个维度,因此可以交换轴0和2,旋转并交换回原位以达到所需的效果。Python迭代可能会比较慢,因为numpy是一个高度优化的低级代码库,所以通常最好使用内置的。在
下面是一个使用^{} 和
flipping/reversing
最后一个轴的方法-运行时测试-
^{pr2}$相关问题 更多 >
编程相关推荐