Skip to main content
 首页 » 编程设计

python之围绕中心单元旋转 3x3 阵列的每个单元的模块(不是矩阵旋转)

2025年05月04日13lori

我想旋转一个数组,但不像基本的矩阵旋转。如果我有一个 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]] 

等..