【问题标题】:To find the transpose of a given matrix找到给定矩阵的转置
【发布时间】:2022-11-30 17:02:33
【问题描述】:

我一直在尝试运行代码,但它给出了错误 - “列表索引超出范围”

是什么原因? 还有没有其他方法可以在不使用 numpy 的情况下找到矩阵的转置

这是我写的代码


n = int(input("Enter the size of square matrix"))
matrix = []
for i in range(n):  
   a =[]
   for j in range(n):  
       a.append(int(input("Enter the entries rowwise:")))
   matrix.append(a)
matrix1 = []
for i in range(0,n):
   b = []
   for j in range(0,n):
        matrix1[i][j] = matrix[j][i]

for i in range(n):
   for j in range(n):
   print(matrix1[i][j], end = " ")
print()

matrix1[i][j] = matrix[j][i] 行错误的原因是什么? 还有没有其他方法可以在不使用 numpy 的情况下找到矩阵的转置

【问题讨论】:

  • 你的缩进不正确 print(matrix1[i][j], end = " ")
  • 我建议使用 4 个空格缩进而不是 3 个空格缩进

标签: python


【解决方案1】:

矩阵 1 是 dim 1 的列表,您尝试对其进行索引,因为它已经是二维列表。尝试使用 b 列表追加反转矩阵的元素,然后将其追加到矩阵 1,如下所示:

n = int(input("Enter the size of square matrix"))
matrix = []
for i in range(n):  
   a =[]
   for j in range(n):  
       a.append(int(input("Enter the entries rowwise:")))
   matrix.append(a)
matrix1 = []
for i in range(0,n):
   b = []
   for j in range(0,n):
        b.append( matrix[j][i])
   matrix1.append(b)
for i in range(n):
   for j in range(n):
       print(matrix1[i][j], end = " ")
print()

```.

【讨论】:

    【解决方案2】:

    您可以使用压缩功能也用于转置。

    例子

    代码:-

    matrix=[[1,2,3],[4,5,6],[7,8,9]]
    #print(matrix)
    res=[]
    for i in zip(*matrix):
        res.append(i)
    print(res)
    

    输出:-

    [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    

    【讨论】:

      【解决方案3】:

      如果矩阵的名称是“矩阵”,只需使用:

      transposed = list(zip(*matrix))
      

      【讨论】:

        猜你喜欢
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 2015-06-24
        相关资源
        最近更新 更多