繁体   English   中英

如何在python中将二维方形numpy数组旋转45度?

[英]How to rotate square numpy array of 2 dimensional by 45 degree in python?

我有一个 numpy 图像数组。 维度为 2,形状为 (100,100)。 我想增加更多数据,因为我只有 52 组 numpy 数组。 我想将给定的数组旋转 45 度。 我应该为此做什么??

假设数组是这样的

a=[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

请将给定的数组旋转 45 度。

您可以使用scipy.ndimage.rotate

import numpy as np
from scipy.ndimage import rotate
x = np.arange(25).reshape(5, -1)
rotate(x, angle=45)

输出

array([[ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  6,  0,  0,  0],
       [ 0,  0,  4,  9, 14,  0,  0],
       [ 0,  3,  8, 12, 16, 21,  0],
       [ 0,  0, 10, 15, 20,  0,  0],
       [ 0,  0,  0, 18,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0]])

不确定 ndimage 通常是否是此类矩阵的良好解决方案。 它可能适用于 45 度,但不适用于其他没有问题的角度。 在下面的示例中,“20”变为 0。(Numpy 版本 1.18.2,scipy 1.4.1)

import numpy as np
from scipy.ndimage import rotate
x = np.arange(25).reshape(5, -1)*1.0
rotate(x, angle=180,reshape=True)
Out[14]: 
array([[24., 23., 22., 21.,  0.],
       [19., 18., 17., 16., 15.],
       [14., 13., 12., 11., 10.],
       [ 9.,  8.,  7.,  6.,  5.],
       [ 4.,  3.,  2.,  1.,  0.]])

x
Out[15]: 
array([[ 0.,  1.,  2.,  3.,  4.],
       [ 5.,  6.,  7.,  8.,  9.],
       [10., 11., 12., 13., 14.],
       [15., 16., 17., 18., 19.],
       [20., 21., 22., 23., 24.]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM