Python学习笔记:求转置矩阵

一、矩阵转置

1、概述

矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。

2、定义

A A A m × n m\times n m×n阶矩阵(即 m m m n n n列),第 i i i j j j列的元素是 a i j a_{ij} aij,即 A = ( a i j ) m × n A=(a_{ij})_{m\times n} A=(aij)m×n,把 m × n m\times n m×n矩阵 A A A的行换成同序数的列得到一个 n × m n\times m n×m矩阵,此矩阵叫做 A A A的转置矩阵,记做 A T A^T AT A ′ A' A

3、实例

A = [ 7 8 1 9 − 3 10 4 9 4 4 7 2 8 1 4 21 4 7 − 4 3 ] A=\left[ \begin{matrix} 7 & 8 & 1 & 9 & -3\\ 10 & 4 & 9 & 4 & 4\\ 7 & 2 & 8 & 1 & 4 \\ 21 & 4 & 7 & -4 & 3 \end{matrix} \right] A=7107218424198794143443

A T = [ 7 10 7 21 8 4 2 4 1 9 8 7 9 4 1 − 4 − 3 4 4 3 ] A^T=\left[ \begin{matrix} 7 & 10 & 7 & 21 \\ 8 & 4 & 2 & 4 \\ 1 & 9 & 8 & 7 \\ 9 & 4 & 1 & -4 \\ -3 & 4 & 4 & 3 \end{matrix} \right] AT=7819310494472814214743

4、运算规律

矩阵的转置和加减乘除一样,也是一种运算,且满足下列运算规律:

  • ( A T ) T = A (A^T)^T=A (AT)T=A
  • ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT
  • ( k A ) T = k A T (kA)^T=kA^T (kA)T=kAT
  • ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT

5、对阵矩阵

(1)定义

A A A n n n阶矩阵,如果满足 A T = A A^T=A AT=A,即 a i j = a j i ( i , j = 1 , 2 , 3 , . . . , n ) a_{ij}=a_{ji} (i,j=1,2,3,...,n) aij=aji(i,j=1,2,3,...,n),那么 A A A称为对称矩阵。

(2)实例

A = [ 7 8 1 6 8 4 9 4 1 9 8 7 6 4 7 2 ] A=\left[ \begin{matrix} 7 & 8 & 1 & 6\\ 8 & 4 & 9 & 4\\ 1 & 9 & 8 & 7\\ 6 & 4 & 7 & 2 \end{matrix} \right] A=7816849419876472

二、编程求转置矩阵

1、编写程序 - 矩阵转置.py

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Created on Sun Oct 11 21:05:53 2020

@author: howard

实现矩阵转置
"""

matrix = [
     [7, 8, 1, 9, -3],
     [10, 4, 9, 4, 4],
     [7, 2, 8, 1, 4],
     [21, 4, 7, -4, 3]
    ]

print('原矩阵:')
for i in range(len(matrix)):
    for j in range(len(matrix[0])):
        print('{0:-2d}'.format(matrix[i][j]), end='\t')
    print()
    
# 求转置矩阵
transposed = []
for j in range(len(matrix[0])):
    transposed_row = []
    for row in matrix:
        transposed_row.append(row[j])
    transposed.append(transposed_row)
  
print('转置矩阵:')
for i in range(len(transposed)):
    for j in range(len(transposed[0])):
        print('{0:-2d}'.format(transposed[i][j]), end='\t')
    print()

2、运行程序,查看结果

在这里插入图片描述

3、优化代码 - 定义求转置矩阵的函数

在这里插入图片描述

# -*- coding: utf-8 -*-
"""
Created on Sun Oct 11 21:05:53 2020

@author: howard

实现矩阵转置
"""

def transpose(matrix):
    transposed = []
    for j in range(len(matrix[0])):
        transposed_row = []
        for row in matrix:
            transposed_row.append(row[j])
        transposed.append(transposed_row)
    return transposed

matrix = [
     [7, 8, 1, 9, -3],
     [10, 4, 9, 4, 4],
     [7, 2, 8, 1, 4],
     [21, 4, 7, -4, 3]
    ]

print('原矩阵:')
for i in range(len(matrix)):
    for j in range(len(matrix[0])):
        print('{0:-2d}'.format(matrix[i][j]), end='\t')
    print()
    
# 求转置矩阵
transposed = transpose(matrix)
  
print('转置矩阵:')
for i in range(len(transposed)):
    for j in range(len(transposed[0])):
        print('{0:-2d}'.format(transposed[i][j]), end='\t')
    print()

4、运行程序,查看效果

在这里插入图片描述

三、利用NumPy数组实现矩阵转置

在这里插入图片描述

1、编写程序 - 实现矩阵转置.py

在这里插入图片描述

2、运行程序,查看结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/howard2005/article/details/109016788