numpy模块的最后一部分。介绍下线性代数、伪随机数生成操作。
线性代数
线性代数(如矩阵乘法、矩阵分解、⾏列式以及其他⽅阵数学等)是任何数组库的重要组成部分。
通过
*
对两个⼆维数组相乘得到的是⼀个元素级的积,⽽不是⼀个矩阵点积。因此,NumPy
提供了⼀个⽤于矩阵乘法的dot
函数:
In [223]: x=np.array([[1.,2., 3.],[4.,5., 6.]])
In [224]: y=np.array([[6.,23.], [-1.,7.],[8.,9.]])
In [225]: x
Out[225]:
array([[1.,2.,3.],
[4.,5.,6.]])
In [226]: y
Out[226]:
array([[6., 23.],
[-1.,7.],
[8.,9.]])
In [227]: x.dot(y)
Out[227]:
array([[28.,64.],
[67.,181.]])
@
符(类似
Python 3.5
)也可以⽤作中缀运算符,也可以进⾏矩阵乘法:
In [230]: x @ np.ones(3)
Out[230]: array([ 6., 15.])
其中常用的numpy的线性代数表
函数 | 说明 |
diag | 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0) |
dot | 矩阵乘法 |
trace | 计算对角线元素和 |
det | 计算矩阵行列式 |
eig | 计算方阵的本征值和本征向量 |
inv | 计算方阵的逆 |
pinv | 计算矩阵的Moore_Penrose伪造 |
qr | 计算QR分解 |
svd | 计算奇异值分解(SVD) |
solve | 解线性方程组AX=b,其中A为一个方阵 |
lstsq | 计算AX=B的最小二乘解 |
伪随机数生成
Python有内置random随机数模块,numpy.random模块对Python内置的random进⾏了补充。其常用random函数如下表
函数 | 说明 |
seed | 确定随机数生成器的种子 |
permutation | 返回一个序列的随机排列或者一个随机排列的范围 |
shuffle | 岁一个序列就地随机排列 |
rand | 产生均匀分布的样本值 |
randint | 从给定的上下线跟范伟内随机选取整数 |
randn | 产生正态分布(平均值为0,标准差为1) |
binomial | 产生二项分布的样本值 |
normal | 产生正态分布的样本值 |
beta | 产生Beta分布的样本值 |
chisquare | 产生卡方分布的样本值 |
gamma | 产生Gamma分布的样本值 |
uniform | 产生在(0,1)中均匀分布的样本值 |
学习到此完毕。