在Python中,如何将矩阵逆时针旋转90度?
编辑:最好没有numpy 您可以使用numpy函数rot90在Python中,如何将矩阵逆时针旋转90度?,python,Python,编辑:最好没有numpy 您可以使用numpy函数rot90 >>> def rotate_matrix( k: List[List[int]]): """ For example, if I have: m = [[1,2,3], [2,3,3], [5,4,3]] rotate_matrix(m) should give me [[3,3,3],[2,3,4],[1,2,5]]. """ 您可以
>>> def rotate_matrix( k: List[List[int]]):
"""
For example, if I have:
m = [[1,2,3],
[2,3,3],
[5,4,3]]
rotate_matrix(m) should give me [[3,3,3],[2,3,4],[1,2,5]].
"""
您可以使用numpy函数rot90
>>> def rotate_matrix( k: List[List[int]]):
"""
For example, if I have:
m = [[1,2,3],
[2,3,3],
[5,4,3]]
rotate_matrix(m) should give me [[3,3,3],[2,3,4],[1,2,5]].
"""
在纯python中,矩阵逆时针旋转为一行(即不带numpy): 如果要在函数中执行此操作,则
new_matrix = [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
不管怎样,结果都是
def rotate_matrix( m ):
return [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
是
除此之外,如果您想要通常的转置,那么简单的一行纯python版本是
[[3, 3, 3], [2, 3, 4], [1, 2, 5]]
在纯python中,矩阵逆时针旋转为一行(即不带numpy): 如果要在函数中执行此操作,则
new_matrix = [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
不管怎样,结果都是
def rotate_matrix( m ):
return [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
是
除此之外,如果您想要通常的转置,那么简单的一行纯python版本是
[[3, 3, 3], [2, 3, 4], [1, 2, 5]]
只需垂直翻转矩阵,然后将右上角三角形与左下角三角形切换
def rotate_90_degree_anticlckwise(matrix):
new_matrix = []
for i in range(len(matrix[0]), 0, -1):
new_matrix.append(list(map(lambda x: x[i-1], matrix)))
return new_matrix
def rotate_90_degree_clckwise(matrix):
new_matrix = []
for i in range(len(matrix[0])):
li = list(map(lambda x: x[i], matrix))
li.reverse()
new_matrix.append(li)
return new_matrix
def rotate_90_degree_clckwise_by_zip_method(matrix):
return list(list(x)[::-1] for x in zip(*matrix))
只需垂直翻转矩阵,然后将右上角三角形与左下角三角形切换
def rotate_90_degree_anticlckwise(matrix):
new_matrix = []
for i in range(len(matrix[0]), 0, -1):
new_matrix.append(list(map(lambda x: x[i-1], matrix)))
return new_matrix
def rotate_90_degree_clckwise(matrix):
new_matrix = []
for i in range(len(matrix[0])):
li = list(map(lambda x: x[i], matrix))
li.reverse()
new_matrix.append(li)
return new_matrix
def rotate_90_degree_clckwise_by_zip_method(matrix):
return list(list(x)[::-1] for x in zip(*matrix))
我回答了您的问题-如您所问,仅使用python。如果你同意我的回答是正确的,并且忠实于你问题的意图,那么请接受和/或投赞成票。或者,请告诉我你还需要什么,我很乐意帮助你。谢谢,我用pythonidle尝试了这段代码,出于某种原因,它输出的是原始矩阵,而不是旋转矩阵。你能帮忙吗?我只是从答案中复制了代码并运行了它,它很完美。请检查您是否在代码中打印了正确的数组,c.f.print(new_matrix)我回答了您的问题-如您所问,仅使用python。如果你同意我的回答是正确的,并且忠实于你问题的意图,那么请接受和/或投赞成票。或者,请告诉我你还需要什么,我很乐意帮助你。谢谢,我用pythonidle尝试了这段代码,出于某种原因,它输出的是原始矩阵,而不是旋转矩阵。你能帮忙吗?我只是从答案中复制了代码并运行了它,它很完美。请检查您在代码中打印的数组是否正确,c.f.print(new_matrix)我在python IDLE中尝试了该代码,出于某种原因,它输出的是原始矩阵,而不是旋转它。你能帮忙吗?我刚刚从这里复制了代码并运行了它,它很完美。请检查您是否在代码中打印了正确的数组,c.f.print(新矩阵)此代码很好,您能否展开这一行代码以了解情况?谢谢。@VrushalRaut问得好,也许画一幅画(或两幅画)会有帮助。我试过用pythonidle编写代码,出于某种原因,它输出的是原始矩阵,而不是旋转矩阵。你能帮忙吗?我刚刚从这里复制了代码并运行了它,它很完美。请检查您是否在代码中打印了正确的数组,c.f.print(新矩阵)此代码很好,您能否展开这一行代码以了解情况?谢谢。@VrushalRaut问得好,也许画一幅画(或两幅画)会有帮助。“编辑:最好不要numpy。”“编辑:最好不要numpy。”