课程介绍
课程名称:Python3入门机器学习 经典算法与应用 入行人工智能
课程章节: 3-4; 3-5; 3-6
主讲老师:liuyubobobo
今日内容
- 创建矩阵与数组
- 矩阵与数组基本操作
第一部分:创建矩阵或数组
创建自己导入的数据作为矩阵或数组
numpy.array
a = np.array([i for i in range(10)])
b = np.array([1,2,3.14])
b.dtype
c = np.arange(0,20,2)
#a=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#b=array([1. , 2. , 3.14])
#dtype('float64') 浮点数
#c=array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#可以改变步长为浮点数
#默认从0开始,步长为1
其他创建numpy.array的方法
1.创建零向量或矩阵
#创建零向量
np.zeros(shape=10,dtype=int)
#零向量(几个,dtype=类型)
#array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
#创建零矩阵
np.zeros(shape=(3,5))
#零矩阵(shape=数组)
2.创建1向量或矩阵
#创建1向量
np.ones(10)
#array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) 默认浮点数
#创建1矩阵
np.ones(shape = (3,5), dtype=int)
#创造行三列五,类型为整数,由一组成的矩阵
#array([[1, 1, 1, 1, 1],
# [1, 1, 1, 1, 1],
# [1, 1, 1, 1, 1]])
3.创造任意数的向量或矩阵
#创造任意数的矩阵
np.full((3,5),666)
np.full(shape=(3,5), fill_value=666)
#二者相同,创造行三列五,由666组成的矩阵
4.创建等差数列
np.linspace(0,20,10)
#创建一个等差数列,数差相等,包含0和20
5.创建随机数组成的数列或者矩阵
#创建一个随机数
np.random.randint(0,10)
#0-10之间取一个随机数
#取值范围和range类似,前开后闭
#创建一个随机数组
np.random.randint(0,10,size=10)
#0-10之间取10个随机数
#创建一个随机矩阵
np.random.randint(0,10,size=(3,5))
#0-10之间取size=(行,列)的随机矩阵
#每次运行都是不一样的结果
#随机种子***
np.random.seed(666)
np.random.randint(0,10,size=(3,5))
#指定随机生成的种子,能获得种子指定的随机数,
#生成10个0-1之间的随机数向量
np.random.random(10)
#生成0-1之间的随机数行为3列为5的矩阵
np.random.random((3,5))
6.创建符合正态分布的数列或者矩阵
np.random.normal()
#符合均值为0,方差为1符合正态分布的浮点数
np.random.normal(0,10,(3,5))
#生成均值为0,方差为10符合正态分布的矩阵
第二部分:Numpy.array的基本操作
先设置一个数组x和矩阵y
x = np.arange(10)
#一维数组`
X = np.arange(16).reshape(4,4)
#将np.arrange(16)生成的数组.reshape转换成4x4的矩阵
基本操作
1.查看维度
x.ndim
#1
X.ndim
#2
2.查看行与列
x.shape
#(10,) 代表数组
X.shape
#(4, 4) 4行x4列的矩阵
数据访问
1.访问整体
x
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
2.利用下标访问
x[0]
#访问第一个数据
#0
3.访问矩阵
X[2,3]
#访问矩阵访问多维数组中的元素
#11 访问第二行第三列的数据
数据访问-切片
1.访问数组
x[0:5]
#访问[0-5)个元素
#[0, 1, 2, 3, 4]
x[::2]
#从头到尾访问,步长为2
#[0, 2, 4, 6, 8]
2.访问矩阵
X[:2,:3]
#取前两行前三列
'''array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])'''
X[1:3,2:4]
#取1行和第2行,第2列和第3列
#注意:数组还有第0列第0行,也就是普遍意义上的第一行第一列
X[0]
#第一行
X[:,0]
#第一列
切片之后的修改
在python列表中,切片之后重新赋值,就会使subx与x指向不同的内存 就会使,对subx的修改不影响x
而在numpy这里不一样,对子集的修改会影响到主集,所以需要使用copy()函数先复制一个在进行操作
reshape改变维度
1.查看维度
x.shape
2.改变维度
B=x.reshape(2,5)
#x=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#array([[0, 1, 2, 3, 4],
# [5, 6, 7, 8, 9]])
#把x的10个数从一维变成2列5行的二位矩阵
C=x.reshape(10,-1)
#获得十行的一个向量(10, 1)
D=x.reshape(-1,10)
#获得十列的一个矩阵(1, 10)
今日收获
今天对使用python操作矩阵,向量,有了基本的了解,写下笔记日后想不起来的还能翻一番挺不错的。