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

标签 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]]

例如,我想将它旋转 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/

相关文章:

python - Google App Engine NDB 中的层次结构

python - 合并不同列上的两个数据框

python - 基于不等式替换 numpy 数组中的值

Python 等效于 MATLAB 的 lsqr(),第一个参数是一个函数

python - 绘制稀疏矩阵的热图

python - 在Python中将基于数字的日期转换为基于字母的日期

python - AirBnB 知识库 : Deploying using a context route

python - 如何在Pycharm Windows 中解决 "django.db.utils.OperationalError: FATAL: password authentication failed for user "Oeloun-pc""?

python - 最快重合矩阵

python - 当数据存在联系时,如何计算 Pandas 中的分位数箱?