【机器学习中可能需要用到的线性代数基础,使用python描述】(一、向量的创建和基本运算)

本文介绍了在机器学习中线性代数的基础知识,特别是如何使用Python的numpy库创建和操作向量。讨论了向量的创建(行向量和列向量)、向量的加法和乘法(包括数量乘法、内积和外积),并解释了在乘法和加法中Python自动填充维度的行为及其潜在风险。
摘要由CSDN通过智能技术生成
前言:最近在回顾自己学习的过程,发现很多东西没有做一个具体的梳理,所以最近在回顾的时候也想整理一下发在这里,主要是方便自己回头看,如果能帮助到一些人也是我的荣幸,如果有疑问或者错误也请指出。
参考书籍:《机器学习线性代数基础-python语言描述》 张雨萌编著。
在参考书的基础上,加入了一些自己的想法、整理和一些用法示例的补充,很多内容不一定与原书一致

由于主要是为了自己方便看,所以需要说明的是,此处默认读者已经掌握基础的线性代数相关知识,本文的目的只是使用python进行相关描述,也并非是为了做一个具体的教程,但我相信只要有基本的python和数学基础都能看懂


1. 向量的创建

这里使用numpy库来进行向量的创建以及之后的内容


1.1 行向量

代码如下:

import numpy as np

a = np.array([1,2,3,4])
print(a)

运行结果为:

[1 2 3 4]

默认生成的是一个行向量


1.2 列向量

需要注意的是,不同于行向量可以直接写成一个一维的形式,仔细观察上面的结果其实是一个只有一个元素的矩阵,里面有四个数字,列向量要写成n*1的形式,是一个二维的矩阵,所以在创建的时候需要注意多加一个括号写成二维
转置很简单,只需要在向量/矩阵后面加一个 .T 即可
如果没有加上中括号以增加维度,会发现转置之后没有变化:

import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.T)

结果为:
[1 2 3 4]
[1 2 3 4]

这是因为python将其看为一个一维数组,里面是1234,所以转置之后结果不会变化


正确的代码如下:

import numpy as np

a = np.array([[1,2,3,4]])
print(a)
print(a.T)

运行结果为:

[[1 2 3 4]]
[[1]
 [2]
 [3]
 [4]]

观察这部分的输出,与行向量是有差别的,这里是一个二维


当然,也可以通过一些方式对以一维形式创建的行向量进行转置,这里介绍 np.newaxis ,它可以增加一个维度
看看如下示例:

import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.shape)
A = a[np.newaxis,:]
print(A)
print(A.shape)

结果为:

[1 2 3 4]
(4,)
[[1 2 3 4]]
(1, 4)

这里 .shape 的作用是查看它的规模,可以看出,在此处,[1,2,3,4]被视为一维数组,而 np.newaxis 的作用就是在他的位置处插入一个维度,这里是插在前面,所以变为了 (1,4) ,冒号是一个切片,可以自行修改使用不同的切片来尝试以加深对插入维度的理解

从上面的例子可以简单想到,如果需要一个列向量,也就是 (4,1) ,只需要在后面插入一个维度即可,如下所示:

import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.shape)
A = a[:,np.newaxis]
print(A)
print(A.shape)

结果自然为:

[1 2 3 4]
(4,)
[[1]
 [2]
 [3]
 [4]]
(4, 1)

2. 向量的运算


2.1 向量加法

只需要将两个向量简单的相加即可,注意维度的一致

import numpy as np

a = np.array([[1,2,3]])
b = np.array([[4,5,6]])

print(a + b)
print(a.T + b.T)

运行结果如下:

[[5 7 9]]
[[5]
 [7]
 [9]]

2.2 向量的乘法


2.2.1 数量乘法(数乘)

依然是简单的相乘即可,数字在前后皆可

import numpy as np

a = np.array([
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值