Python 如何使矩阵顺时针旋转90度?

Python 如何使矩阵顺时针旋转90度?,python,arrays,python-3.x,matrix,rotation,Python,Arrays,Python 3.x,Matrix,Rotation,用额外的O(1)个空间将正方形矩阵旋转90度。我已经用Python解决了这个问题。我想知道我是否可以进一步改进我的代码 def rotate_by_90(m): # unpacking arguments with zip(*) in reverse with [ : :-1] tuples = zip(*m[::-1]) # flattening tuples to list with [list(i)] return [list(i) for i in tuples] de

用额外的O(1)个空间将正方形矩阵旋转90度。我已经用Python解决了这个问题。我想知道我是否可以进一步改进我的代码

def rotate_by_90(m):
  # unpacking arguments with zip(*) in reverse with [ : :-1]
  tuples = zip(*m[::-1])
  # flattening tuples to list with [list(i)]
  return [list(i) for i in tuples]

def makeMatrix(array, size):
  # validating size of matrix for given array
  if (size**2!=len(array)):
    return -1
  # make sub array of length size using array slicing  
  else:
    matrix = [array[i:i+size] for i in range(0, len(array), size)]
    return rotate_by_90(matrix)

arr = [1,2,3,4]
dimension = 2
result = makeMatrix(arr, dimension)
# Original Matrix: [[1, 2], [3, 4]]
# Result: [[3, 1], [4, 2]]

如果您正在寻找速度,那么您使用的阵列类型是错误的。您需要切换到numpy数组而不是列表。在Numpy中,当然有这样一个操作函数:

不需要外部库或zip。使用此选项进行面试:

  • 按x轴翻转它
  • 对角交换坐标
  • def旋转90度(米):
    a、 反向
    对于范围内的i(len(a)):
    对于范围(i)中的j:
    a[i][j],a[j][i]=a[j][i],a[i][j]
    
    返回一个

    您能否在问题的上下文中定义
    改进
    ?更快?现在它有什么问题需要改进?是的,有可能让它更快吗?例如,如果维度增加到10000。非常感谢。我会试试的。