分享免费的编程资源和教程

网站首页 > 技术教程 正文

Python数据分析笔记#5.3 Numpy-线性代数

goqiw 2024-10-16 11:26:41 技术教程 26 ℃ 0 评论


线性代数Linear Algebra

线性代数是任何数组库的重要组成部分,Numpy包含了线性代数所需的所有功能。

np.dot是Numpy提供的用于矩阵乘法的函数

In [1]: import numpy as np

In [2]: x = np.array([[1, 2, 3], [4, 5, 6]])

In [3]: y = np.array([[6, 23], [-1, 7], [8, 9]])

In [4]: x
Out[4]:
array([[1, 2, 3],
       [4, 5, 6]])

In [5]: y
Out[5]:
array([[ 6, 23],
       [-1,  7],
       [ 8,  9]])

In [6]: np.dot(x, y)
Out[6]:
array([[ 28,  64],
       [ 67, 181]])

x.dot(y)等价于np.dot(x,y)

In [7]: x.dot(y)
Out[7]:
array([[ 28,  64],
       [ 67, 181]])

@运算符也可以用作中缀运算符,进行矩阵乘法

In [8]: x@y
Out[8]:
array([[ 28,  64],
       [ 67, 181]])

numpy.linalg提供了可以求解矩阵分解运算和矩阵求逆之类的工具。

In [9]: from numpy.linalg import inv

In [10]: x = np.random.randn(3, 3)

In [11]: mat = x.T.dot(x)

In [12]: mat
Out[12]:
array([[ 0.75374653,  0.33570232, -0.31574004],
       [ 0.33570232,  1.19771393, -0.06018373],
       [-0.31574004, -0.06018373,  1.87161218]])

inv可以求矩阵的逆:

In [13]: inv(mat)
Out[13]:
array([[ 1.6343851 , -0.44495946,  0.26141179],
       [-0.44495946,  0.95741487, -0.04427772],
       [ 0.26141179, -0.04427772,  0.57697496]])

In [14]: mat.dot(inv(mat))
Out[14]:
array([[ 1.00000000e+00,  1.32672710e-17, -1.50678728e-17],
       [-1.18986098e-17,  1.00000000e+00, -4.51719881e-18],
       [-5.35691802e-17, -1.15608658e-18,  1.00000000e+00]])

trace可以求矩阵的迹(矩阵对角线之和):

In [15]: np.trace(mat)
Out[15]: 3.8230726392316376

det可以计算矩阵行列式:

In [16]: from numpy.linalg import det

In [17]: det(mat)
Out[17]: 1.3693430633286146

更多的numpy线性代数函数见下面表格:



这篇比较简单,忘记了相关的函数查阅一下就行了。




Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表