python 手电筒旋转方向. rot90

2ekbmq32  于 2023-08-02  发布在  Python
关注(0)|答案(2)|浏览(122)

在torch.rot90的文档中指出
如果k > 0,则旋转方向是从第一轴朝向第二轴,并且对于k < 0,旋转方向是从第二轴朝向第一轴。
然而,假设我们从轴0旋转到轴1,轴0是顺时针方向还是逆时针方向旋转到轴1?(因为它们都是90度旋转,如下图所示)


的数据

thtygnil

thtygnil1#

axis=0是向下的维度,而axis=1指向右侧。像这样可视化轴:

---------> axis=1
|
|
|
\/
axis=0

字符串
现在,k>0表示逆时针方向,k<0表示顺时针方向。
因此,在本发明中,

>>> x = torch.arange(6).view(3, 2)
>>> x
tensor([[0, 1],
        [2, 3],
        [4, 5]])

>>> torch.rot90(x, 1, [0,1])
tensor([[1, 3, 5],
        [0, 2, 4]])

>>> torch.rot90(x, 1, [1,0])
tensor([[4, 2, 0],
        [5, 3, 1]])


torch.rot90()类似于numpy.rot90()
例如,在
numpy.rot90(m, k=3, axes=(0, 1))
将按照下图以图形方式表示:


的数据

z9zf31ra

z9zf31ra2#

对我来说,当考虑高度和宽度时,这些旋转更有意义。如果将axis=0视为高度尺寸,将axis=1视为宽度尺寸。然后:
取一个简单的输入矩阵x

>>> x
tensor([[0, 1],
        [2, 3]])

字符串

  • k > 0axis=0axis=1,对应“高朝宽”,即逆时针方向。
>>> x.rot90(k=1)
tensor([[2, 0],
        [3, 1]])

  • k < 0axis=1axis=0,这次是“宽向高”,即 * 顺时针旋转。
>>> x.rot90(k=-1)
tensor([[1, 3],
        [0, 2]])

相关问题