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

Loï*_*cin 1 python numpy scipy

我想旋转数组但不喜欢基本的矩阵旋转.如果我有一个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]]
Run Code Online (Sandbox Code Playgroud)

我希望例如将它旋转45度:

[[2 3 6]
 [1 5 9]
 [4 7 8]]
Run Code Online (Sandbox Code Playgroud)

我无法使用,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]]
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这一目标?

Ray*_*ama 5

你几乎只使用它:

ndimage.interpolation.rotate(tab,45,reshape=False,mode='nearest')
Run Code Online (Sandbox Code Playgroud)

问题是你需要强制方法不重塑你的矩阵,并使用最接近的数字填充空白而不是零.

用零的问题是,一些数字(那些在角落),成为了界限的,当你旋转矩阵,所以你需要"预测"那些失踪的角落通过最近像一种高精度这里

输出:

[[2 3 6]
 [1 5 9]
 [4 7 8]]
Run Code Online (Sandbox Code Playgroud)

再次旋转它给出:

[[3 6 9]
 [2 5 8]
 [1 4 7]]
Run Code Online (Sandbox Code Playgroud)

等等..