gpt4 book ai didi

python - 阵列就地旋转器返回错误值

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:37:43 27 4
gpt4 key购买 nike

我想定义一个函数将矩阵原地旋转90度

def rotate_matrix(matrix):
for i in range(len(matrix)//2):
for j in range(i, len(matrix)-i-1):
matrix[~j][i], matrix[i][j], matrix[j][~i], matrix[~i][~j] = matrix[i][j], matrix[j][~i], matrix[~i][~j], matrix[~j][i]
return matrix

插入时:

[
[a, b],
[c, d]
]

它返回:

[
[b, d],
[a, c]
]

代替:

[
[c, a],
[d, b]
]

我不确定为什么。

最佳答案

你走对了!您的代码执行逆时针旋转,而不是顺时针
要解决它,您必须对分配逻辑进行一些小的更改:

def rotate_matrix(matrix):
for i in range(len(matrix)//2):
for j in range(i, len(matrix)-i-1):
matrix[~j][i], matrix[i][j], matrix[j][~i], matrix[~i][~j] = \
matrix[~i][~j], matrix[~j][i], matrix[i][j], matrix[j][~i]
return matrix

做你正在寻找的。


但是,我会使用 numpy,因为它有一个 built in method对于旋转矩阵:

import numpy as np
mat = np.array([['a','b'],
['c','d']])

def rotate_matrix(matrix):
return np.rot90(matrix, 3) // * SEE NOTE

print(rotate_matrix(mat))

返回:

[['c' 'a']
['d' 'b']]


注意:rot90 方法提供逆时针 旋转。由于您请求顺时针旋转,因此您必须指定参数 3 以指定实现顺时针旋转所需的逆时针旋转量。

关于python - 阵列就地旋转器返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55180504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com