[英]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.