前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。
一、课程目标
- 掌握矩阵的创建方法
- 掌握矢量运算的基本方法
二、详情解读
2.1.掌握矩阵的创建方法
2.1.1.区分
- 矩阵:矩阵是
numpy
库的一种对象 - 矩阵 ≠ \neq = 二维数组
1.创建矩阵:
方法一:
import numpy as np
A = np.mat([1, 2, 3])
运行结果:
矩阵也有shape
属性
A.shape
运行结果:
方法二:
B = np.mat('1 2 3; 4 5 6; 7 8 9') # 方阵
运行结果:
方法三:
# 数组作为参数,创建矩阵
M1 = np.mat(np.eye(3))
M2 = 2 * M1
运行结果:
方法四:矩阵的合并
np.bmat('M1 M2; M2 M1')
运行结果:
2.矩阵间的乘法:
先初始化两个数组:
a = np.arange(1, 10).reshape((3, 3))
b = np.array([[1, 0, 1], [0, 1, 1], [1, 1, 0]])
print(a)
print('-'*10)
print(b)
运行结果:
两个数组用“*”相乘,对应元素相乘
a * b
运行结果:
两个矩阵用“*”相乘
A = np.mat(a)
B = np.mat(b)
A * B
运行结果:
原理图解:
下面的计算与上述等价:
np.dot(a, b)
运行结果:
矩阵的转置:
A.T
运行结果:
2.2.矢量运算
2.2.1.标量积
- 标量积(英语:
Scalar Product
)是两个矢量相乘的一种方式和结果。 - 也被称为数量积、点积(英语:
Dot Product
)、内积(英语:Inner Product
)。 - 按照这种方式两个矢量相乘的结果是一个标量。
代数理解:
假设两个矢量 a ⃗ = [ a 1 , a 2 , a 3 , . . . a n ] \vec{a} = [a_1, a_2, a_3, ... a_n] a=[a1,a2,a3,...an] 和 b ⃗ = [ b 1 , b 2 , b 3 , . . . . b n ] \vec{b} = [b_1, b_2, b_3, .... b_n] b=[b1,b2,b3,....bn],它们的点积定义为:
a ⃗ ⋅ b ⃗ = ∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + . . . + a n b n \vec{a} \cdot \vec{b} = \sum_{i=1}^na_ib_i = a_1b_1 + a_2b_2 + ... + a_nb_n a⋅b=i=1∑naibi=a1b1+a