【问题标题】:Rotating a 2D array in Python在 Python 中旋转二维数组
【发布时间】:2021-11-02 03:52:10
【问题描述】:

我有一个非常大的二维数组/矩阵形式的数据集(i 和 j,125 * 125),当我在二维图中绘制这些值时,我可以在图的特定区域看到几个模式和形状.我正在尝试使用相同的数据,但要旋转矩阵中的数据(以便在保持相同数据的同时可以清楚地旋转图中看到的那些模式),比如说顺时针旋转 10 度。无论如何我可以使用Python做到这一点吗?换句话说,我希望每个点的坐标的位置以一种可以给我们原始图的旋转版本的方式移动,如果这有意义的话,这样在比较两个图之后,人们可以清楚地看到新图是相同数据的旋转版本。

我附上了一个示例数据集。我的模拟软件从左到右、从右到左、从左到右……读取每一行的数据,直到到达数据的末尾。

【问题讨论】:

  • 欢迎来到 Stack Overflow。好问题,但我并不完全清楚你想要什么 - 变换的 result,或者更像是仿射变换产生的某个坐标空间中的新像素位置。
  • 问题是没有直接1-1匹配的格子。实际上,更准确地说,存在双射,但都扭曲了离散化的空间。因此,您当然需要对单元格进行插值。对于输入数据,这种插值并不总是有意义的。由于需要保留一些属性(例如能量、脉冲等),因此插值算法可能会根据输入数据而改变。如果你不关心这个并且所有的值都是 0
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python numpy matrix rotation


【解决方案1】:

听起来您可能正在寻找scipy.ndimage.rotate()ndimage 模块很棒——你可以对 ndarray 做很多“形象化”的事情。

你会想要reshape=True 我想确保你不会丢失数据。来自文档:

>>> from scipy import ndimage, misc
>>> img = misc.ascent()
>>> rot_45 = ndimage.rotate(img, 45, reshape=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2022-01-07
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多