矩阵的基本运算(相乘、相加、求逆、转置)

您所在的位置:网站首页 a的转置加e 矩阵的基本运算(相乘、相加、求逆、转置)

矩阵的基本运算(相乘、相加、求逆、转置)

2024-06-29 10:12| 来源: 网络整理| 查看: 265

python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。

from numpy import * ; #导入numpy的库函数 import numpy as np; #这个方式使用numpy的函数时,需要以np.开头。

1. 矩阵相乘 矩阵相乘的条件是第一个矩阵的列数等于第二个矩阵的行数。 输入:

import numpy as np data = np.mat([[3, 4, 4], [4, 9, 7], [2, 3, 3]]) data1 = np.mat([[2, 3], [4, 5], [6, 7]]) print(data*data1)

结果:一个3x3的矩阵乘以3x2的矩阵,为一个3x2的矩阵

[[ 46 57] [ 86 106] [ 34 42]]

还可以用dot(A,B)函数,这个函数执行的是严格的矩阵乘法

data = np.array([[3, 4, 4], [4, 9, 7], [2, 3, 3]]) data1 = np.array([[2, 3], [4, 5], [6, 7]]) print(np.dot(data, data1))

结果:

[[ 46 57] [ 86 106] [ 34 42]]

2. 实现对应元素相乘 各个矩阵对应元素做乘法,若 A 为 m * n 的矩阵,B 为 m * n 的矩阵,得到一个 m*n 的矩阵。

data = np.mat([[3, 4], [4, 9], [2, 3]]) data1 = np.mat([[2, 3], [4, 5], [6, 7]]) print(np.multiply(data,data1))

结果:

[[ 6 12] [16 45] [12 21]]

3.矩阵相加 矩阵行数和列数要相同(同型)

data = np.mat([[3, 4, 4], [4, 9, 7], [2, 3, 3]]) data_2 = np.mat([[2, 4, 4], [4, 4, 7], [2, 5, 3]]) print(data+data_2)

4.矩阵求逆 矩阵A可逆的充分必要条件是|A|≠0,Singular matrix奇异矩阵不可求逆。

import numpy as np data3 = np.mat([[3, 4], [4, 5]]) print(np.linalg.inv(data3)) #data3.I,矩阵对象可以通过 .I 求逆

若通过array初始化一个矩阵,用 .I 求逆将出错,可使用matirx转化后再求逆。

import numpy as np data3 = np.array([[3, 4], [4, 5]]) print(data3.I) AttributeError: 'numpy.ndarray' object has no attribute 'I'

对一个奇异矩阵求逆将出错

A = np.zeros((4, 4)) A[0, -1] = 1 A[-1, 0] = -1 B=np.matrix(A) # 使用.I求逆先用matrix转化 print(B.I)

numpy.linalg.LinAlgError: Singular matrix 由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但可以用函数pinv(A)求其伪逆矩阵。伪逆矩阵是逆矩阵的广义形式。函数返回一个与A的转置矩阵A’ 同型的矩阵。

A = np.zeros((3, 4)) A[0, -1] = 1 A[-1, 0] = -1 print(np.linalg.pinv(A))

结果:

[[ 0. 0. -1.] [ 0. 0. 0.] [ 0. 0. 0.] [ 1. 0. 0.]]

5.矩阵的转置

A = np.mat([[2, 3, 1], [6, 7, 8]]) print(A.T)

输出:

[[2 6] [3 7] [1 8]]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3