python机器学习算法应用

  • 矩阵数乘
  • Universial Functions
  • 矩阵运算
  • 矩阵转置
  • 向量和矩阵的运算
  • 矩阵的逆


矩阵数乘

如果自己去写for循环创建数乘之后的列表,效率很低,花费的时间代价很大。

可以使用numpy.array()来创建数乘结果矩阵。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵


注:绝对不可以使用直接使用一个数去直接乘一个普通的列表的情况,这样只是将列表的元素复制了n次。

Universial Functions

若是使用numpy.array()创建的矩阵则可以直接进行加减乘除、乘方、求余的数乘运算。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_02


python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵相乘_03


注://是只进行整数运算,即结果进行截断

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_python_04


python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_python_05


求倒数操作:

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_numpy_06


求矩阵每个元素的绝对值:numpy.abs(X)

求矩阵每个元素的正弦值:numpy.sin(X)

求矩阵每个元素的余弦值:numpy.cos(X)

求矩阵每个元素的正切值:numpy.tan(X)

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵相乘_07


对矩阵X中的每个元素x求ex:np.exp(X)

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_numpy_08


对矩阵X中的每个元素x求ax:np.power(a,X)

np.power(a,X) 的结果和a ** X的结果是一样的。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_numpy_09


对矩阵X中的每个元素x取log值(以自然对数e为底):numpy.log(X)

以2为底取对数的函数:numpy.log2(X)

以10为底取对数的函数:numpy.log10(X)

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵相乘_10

矩阵运算

使用numpy创建的矩阵可以直接做加、减、乘运算,其中加减运算要满足两个矩阵是同型矩阵,乘法要满足前一个矩阵的列数等于第二个矩阵的行数。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_numpy_11


矩阵乘法不能直接使用*,要使用dot()函数。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵_12

矩阵转置

只要使用矩阵的属性T

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵_13

向量和矩阵的运算

向量和矩阵做加法时,是将向量的元素加到矩阵的每一行上

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵_14


这里使用v进行在行方向上进行堆叠。A.shape[0]表示A矩阵的第1维度(行)

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_15


np.tile()方法传入一个矩阵v,后面再跟一个元组,元组里的元素表示在某个维度上堆叠的次数。例如:(2,1)表示在第一维度上堆叠两次,在第二维度上堆叠一次。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_16


向量和矩阵做乘法

直接使用*号做向量和矩阵的乘法得到的矩阵是向量和矩阵对应位置元素的乘积。而不是我们想要的矩阵和向量乘积。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_17


做矩阵乘法同样使用dot()方法

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵_18


python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_19

矩阵的逆

使用方法numpy.linalg.inv()方法,将需要求得逆矩阵的矩阵作为参数传入。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_逆矩阵_20


矩阵和其逆矩阵相乘为单位矩阵。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_21


想要有逆矩阵,矩阵必须为方阵(n*n)

矩阵不是方阵,不可以求得逆矩阵,但是可以求得其伪逆矩阵。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵相乘_22


创建二维矩阵X(2*8),然后求其伪逆矩阵,再和矩阵相乘得到的矩阵近乎是单位矩阵。

python统计矩阵中每个区间内的元素数 python对矩阵每个元素取对数_矩阵转置_23