我创建了一个成功旋转矩阵外层的函数。我已经尝试添加一个循环,以便它对矩阵的内部层做同样的事情,但我没有运气。
def rotateMatrix(mat,size):
temp = []
for i in range(size):
temp.append(mat[0][i])
for i in range(size-1):
mat[0][i] = mat[size-(1+i)][0]
mat[size-(1+i)][0] = mat[size-1][size-(1+i)]
mat[size-1][size-(1+i)] = mat[0+i][size-1]
mat[0+i][size-1] = temp[i]
return mat
有没有办法可以稍微改变一下以允许旋转内层?
我试图在不使用任何库或内置函数的情况下执行此操作。
答案 0 :(得分:1)
也许您正在寻找numpy.transpose()?
>>> import numpy as np
>>> x = np.array([[0, 1], [2, 3]])
>>> np.transpose(x)
array([[0, 2],
[1, 3]])
答案 1 :(得分:1)
这会将矩阵旋转90度 请注意,旋转不是就地完成的,而是为结果分配了另一个矩阵。
def rotate_matrix(matrix):
size = len(matrix)
# init rotated matrix with None elements
rotated_matrix = [[None]*size for _ in range(size)]
for i in xrange(size):
for j in xrange(size):
rotated_matrix[j][size-1-i] = matrix[i][j]
return rotated_matrix
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
rotated_matrix = rotate_matrix(matrix)
print rotated_matrix
>> [[7, 4, 1],
>> [8, 5, 2],
>> [9, 6, 3]]
答案 2 :(得分:0)
您如何看待使用zip(),如下所示:
>>> a = [[0, 1], [2, 3]]
>>> list(zip(*a))
[(0, 2), (1, 3)]
>>> list(map(list, list(zip(*a))))
[[0, 2], [1, 3]]