
正文
[机器学习基础]矩阵基础和numpy
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
矩阵定义:[摘自百度百科]
由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作Amn。
元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵.
基本运算:
矩阵运算在科学计算中非常重要而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置
加法

矩阵的加法满足下列运算律(A,B,C都是同型矩阵):


应该注意的是只有同型矩阵之间才可以进行加法[11].
减法

数乘

矩阵的数乘满足以下运算律:



矩阵的加减法和矩阵的数乘合称矩阵的线性运算[8]。
乘法
两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵
,它的一个元素:

并将此乘积记为:
例如:

矩阵的乘法满足以下运算律:
结合律: 

左分配律: 

右分配律: 

矩阵乘法不满足交换律。
Python numpy
安装:
pip install numpy
使用:
# 创建数组
a = np.array([1, 2, 3, 4])
# 多维数组
b = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print a
print b
# 数组大小
print a.shape
print b.shape
# 查看类型
c = np.array(['', 22, 33])
print c.dtype
print a.dtype
# 存取方法
print a[:-1]
print a[1:2]
# 其中注意的是通过下标取值产生新的数组雨原始数组共享同一块数据空间
d = a[0:3]
print d
d[2] = 333333
print d
print a
乘积:
乘积中*和dot是不一样,*是数组元素逐个计算,dot是按照矩阵来进行计算
# 创建数组
a = np.array([[1, 2], [5, 6]])
# 多维数组
b = np.array([[1, 2], [5, 6]])
print a
print b
print "*" * 30
c = a * b
print c
print "-" * 30
d = np.dot(a, b)
print d
输出:
[[1 2]
[5 6]]
[[1 2]
[5 6]]
******************************
[[ 1 4]
[25 36]]
------------------------------
[[11 14]
[35 46]]
dot计算公式:
dot(a, b) [i , j, k, m] = sum(a[i, j, :] * b[k, :, m])
inner计算公式:
inner(a, b)[i, j, k, m] = sum(a[i, j, :] * b[k, m, :])







