[机器学习基础]矩阵基础和numpy

时间:2021-03-02 21:24:12
矩阵定义:[摘自百度百科]
由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:
[机器学习基础]矩阵基础和numpy
这m×n 个数称为矩阵 A的元素,简称为元,数aij位于矩阵 A的第i行第j列,称为矩阵 A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵 A也记作 Amn
元素是 实数的矩阵称为 实矩阵,元素是 复数的矩阵称为 复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵.
基本运算:
矩阵运算在 科学计算中非常重要而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置
 

加法

[机器学习基础]矩阵基础和numpy
矩阵的加法满足下列运算律(A,B,C都是同型矩阵):
[机器学习基础]矩阵基础和numpy
[机器学习基础]矩阵基础和numpy
应该注意的是只有同型矩阵之间才可以进行加法[11].

减法

[机器学习基础]矩阵基础和numpy

数乘

[机器学习基础]矩阵基础和numpy
矩阵的数乘满足以下运算律:
[机器学习基础]矩阵基础和numpy
[机器学习基础]矩阵基础和numpy
[机器学习基础]矩阵基础和numpy
矩阵的加减法和矩阵的数乘合称矩阵的线性运算[8]。

乘法

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是 m× n矩阵和B是 n× p矩阵,它们的乘积C是一个 m× p矩阵
  [机器学习基础]矩阵基础和numpy 
,它的一个元素:
[机器学习基础]矩阵基础和numpy
并将此乘积记为:
  [机器学习基础]矩阵基础和numpy 
例如:
[机器学习基础]矩阵基础和numpy
矩阵的乘法满足以下运算律:
结合律:
  [机器学习基础]矩阵基础和numpy
左分配律:
  [机器学习基础]矩阵基础和numpy
右分配律:
  [机器学习基础]矩阵基础和numpy
矩阵乘法不满足 交换律
 

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(['11', 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, :])