我想旋转一个数组,但不像基本的矩阵旋转。如果我有一个 3x3 阵列,我希望每个单元格都围绕中央单元格转动。
这是一个 3x3 数组:
import numpy as np
tab = np.array([[1,2,3],[4,5,6],[7,8,9]])
[[1 2 3]
[4 5 6]
[7 8 9]]
例如,我想将它旋转 45 度:
[[2 3 6]
[1 5 9]
[4 7 8]]
我不能使用 scipy.ndimage.interpolation.rotate(tab,45)
因为它应用了基本的矩阵旋转,这不是我想要的。
import numpy as np
from scipy import ndimage
tab = np.array([[1,2,3],[4,5,6],[7,8,9]])
ndimage.interpolation.rotate(tab,45)
[[0 0 0 0]
[0 2 6 0]
[0 4 8 0]
[0 0 0 0]]
有人知道如何实现吗?
最佳答案
你差点就用这个了:
ndimage.interpolation.rotate(tab,45,reshape=False,mode='nearest')
问题是您需要强制该方法不 reshape 您的矩阵,并使用最接近的数字而不是零来填充空白。
零的问题是当你旋转矩阵时一些数字(角落里的那些)会超出边界,所以你需要像精确的一样“预测”那些缺失的角落最近here
输出:
[[2 3 6]
[1 5 9]
[4 7 8]]
再次旋转它给出:
[[3 6 9]
[2 5 8]
[1 4 7]]
等..
关于python - 围绕中心单元旋转 3x3 阵列的每个单元的模块(不是矩阵旋转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893343/