愿幸福像内存一样经常溢出,金钱像硬盘一样存个没够,
好运像鼠标一样握在手中,生活像CPU一样奔腾不息,前途像显示器一样无比明亮。
目录
1.前言
2.矩阵的创建
2.1矩阵对象——numpy.matrix
2.2矩阵对象属性
3.矩阵运算
3.1矩阵相乘
3.2矩阵转置、求逆
4.随机数模块——numpy.random
4.1——seed函数
4.2打乱顺序函数——shuffle
上篇已经讲解了数组的一些操作,本篇讲解矩阵的一些相关操作。在讲解之前我们先说说数组与矩阵的区别:
1.数组中的元素可以是字符或字符串,而矩阵只能是数
2.数学计算的区别。矩阵直接用*号相乘,而数组需用.dot()
3.array更灵活,不仅能表示1维、2维,还能表示多维数据,运算速度也更快。
4.矩阵显示时,元素间无逗号;数组显示时,元素间用逗号隔开
补充:二维数组的乘法、转置、求逆
乘法:
A=np.array([[1,1],[2,2]])
B=np.array([[1,2],[3,2]])
print(A*B)
print(np.dot(A,B))
✨乘号运算符:对应元素分别相乘
✨矩阵相乘:按照矩阵相乘规则运算,使用函数matmul(A,B)或dot(A,B)
转置、求逆:
a=np.array([[1,2],[3,4]])
print(np.transpose(a))
print(np.linalg.inv(a))
导入numpy模块
import numpy as np
matrix(字符串/列表/元组/数组)
可简写mat(字符串/列表/元组/数组)
a=np.mat(' 1 2 3 4; 5 6 7 8 ')
print(a)
print(type(a))
b=np.mat([[1,2,3,4],[5,6,7,8]])
print(b)
print(type(b))
字符串组成,各元素空格隔开,各行分号隔开
属性 |
说明 |
.ndim |
矩阵的维数 |
.shape |
矩阵的形状 |
.size |
矩阵的元素个数 |
.dtype |
元素的数据类型 |
与数组对象属性相同
直接使用 *
A=np.mat([[1,2,3],[1,1,1]])
B=np.mat([[1,2],[3,4],[5,6]])
print(A*B)
矩阵转置:.T
矩阵求逆:.I
A=np.mat([[1,2],[2,2]])
print(A.T)
print(A.I)
print(A*A.I) #矩阵×逆矩阵=单位矩阵
函数 | 功能描述 | 返回值 |
np.random.rand(d0,d1,...,dn) | 元素在[0,1)区间均匀分布的数组 | 浮点数 |
np.random.uniform(low,high,size) | 元素在[low,high)区间均匀分布的数组 | 浮点数 |
np.random.randint(low,high,size) | 元素在[low,high)区间均匀分布的数组 | 整数 |
np.random.randn(d0,d1,...,dn) | 产生标准正态分布的数组 | 浮点数 |
np.random.normal(loc,scale,size) | 产生正态分布的数组 | 浮点数 |
伪随机数:由随机种子,根据一定的算法生成的。
随机种子:指定随机数生成时所用算法开始的整数值。
如果使用相同seed()值,则每次生成的随机数都相同。
如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差 异而不同。
采用seed()函数设置随机种子,仅一次有效。
随机数产生的算法,和系统有关。
np.random.seed(256)
print(np.random.rand(2, 3))
print(np.random.rand(2,3))
np.random.shuffle(序列)
import numpy as np
import random
arr=np.arange(10)
print(arr)
np.random.shuffle(arr)
print(arr)
b=np.arange(12).reshape(4,3)
print(b)
np.random.shuffle(b)
print(b)
对多维数组只会打乱第一维数据,对数据样本集的打乱。
时节如流,冬雪落满山海。
岁末将至,新年踏歌而来。
纵使人潮汹涌,光阴似箭,
亦盼山海广阔,岁月风平。