【发布时间】:2017-05-21 00:41:46
【问题描述】:
x = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
旋转 1 个单位应该给出:
x = [[4, 1, 2],
[7, 5, 3],
[8, 9, 6]]
基本上,我想将数组中的每个圆形层移动“n”个单位。
我查看了 numpy.roll,但不知道在这个用例中使用它。 我不能使用像 scipy.ndimage.interpolation.rotate 这样的图像旋转例程,因为它们会改变形状并且不能完全达到预期的效果。
编辑:
对于 4 X 4 矩阵:
x = [[a, b, c, d],
[e, f, g, h],
[i, j, k, l],
[m, n, o, p]]
旋转 1 个单位应该给出:
x = [[e, a, b, c],
[i, j, f, d],
[m, k, g, h],
[n, o, p, l]]
编辑:
添加一些关于这如何适用于任意尺寸的说明。
对于旋转 1 个单位的 N X N 矩阵,外部“环”首先移动 1。其余的“内部”(N-2) X (N-2) 矩阵递归遵循相同的逻辑。
【问题讨论】:
-
我不熟悉 numpy 但数组 rotation 是否应该影响其中的元素?因为您在原始数组中有 9 但在旋转版本中没有。我真的不确定,只是问一下,以防它可能是错误的。
-
能否也展示一个 4x4 数组的示例?
-
你能检查你的结果吗?它应该是
[[4, 1, 2], [7, 5, 3], [8, 9, 6]]吗?因为现在,我无法理解它...... -
你是对的。不知道我是怎么搞砸的。固定。
-
编辑添加 4 X 4 案例