Python Numpy 矩阵运算(附实例和学习材料)

Abstract:使用numpy进行矩阵的加减乘除、转置、求逆、求特征向量等运算。

1.numpy矩阵运算语法

  1. import numpy库:import numpy as np
  2. 创建矩阵:a = np.mat([[x1, x2,…,xn], [y1, y2, …, yn]])
  3. 矩阵乘法:
    • a * b
    • np.dot(a, b ):求两数组点积
  4. 矩阵加减:a - b
  5. 矩阵转置:

    • a.T
    • a.transpose()
  6. 矩阵除法:a/b

  7. 矩阵求逆:

    • a.I
    • np.linalg.inv(a)
  8. 求特征向量:np.linalg.eig(a)

  9. 求迹:np.trace(a)

  10. 求行列式的值:numpy.linalg.det()

  11. 求两个数组的矩阵乘积:numpy.matual(a, b)

  12. 求矩阵形式的线性方程的解:numpy.linalg.solve()

延伸:numpy.linalg 模块里还有很多矩阵运算的方法,感兴趣的可以去了解下 (在文末的Extender里给出了学习材料 Tutorials Numpy 教程)~

关于矩阵乘法需要注意:

  • 矩阵乘法规定,只有当第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义
  • 若a为 m x p 的矩阵,B为 p x n的矩阵,则 a x b 的结果是 m x n的矩阵。
  • 若两矩阵行列数不满足上面的条件,可以对矩阵进行转置。
  • 维度数不符合要求,则不能执行矩阵乘法。

2.numpy 数组语法

  1. 随机生成数组:np.random.rand(m, n)
  2. 创建数组:np.array([[x1, x2,…,xn], [y1, y2, …, yn]])
  3. 向数组添加元素:np.append(A, a_i)
  4. ​数组索引:A[2:5] 表示索引数组 A 中第 3 到第 5 个元素

3. 实例(求多元回归最小二乘估计)

多元回归方程参数最小二乘估计的公式:$B=(X^TX)^{-1}X^TY$

代码实例:

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np

X = np.mat([[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[41, 45, 51, 52, 59, 62, 69,72, 78, 80, 90, 92, 98, 103],
[49, 58, 62, 71, 62, 74, 71, 74, 79, 84, 85, 94, 91, 95]])

X=X.T

Y = np.mat([28, 39, 41, 44, 43, 50, 51, 57, 63, 66, 70, 76, 80, 84]).T

B = (X.T * X).I * X.T * Y

print B
1
2
3
[[-15.93836228]
[ 0.52227044]
[ 0.47382726]]

Extender

【非常全的教程】TutorialsPoint Numpy 教程

运用numpy进行数组、向量、矩阵运算

70个NumPy练习:在Python下一举搞定机器学习矩阵运算

Numpy 小结

Thanks!