【知识框架】
深度学习之Numpy篇
一、ndarray数组
1、创建ndarray数组
array函数
该函数将列表转换为数组
import numpy as np
a = [0,1,2,3,4]
b = np.array(a)
print(b)
arange函数
创建一个数组,该数组是一个设定范围、确定间隔、递增的数组
import numpy as np
a = np.arange(0,10,2)#从0开始到10结束(不包括10),递增间隔为2
print(a)
【运行结果】
zeros函数
创建指定长度的形状的全0数组
import numpy as np
a = np.zeros([3,3])#创建一个3*3的全0数组
print(a)
【运行结果】
ones函数
创建指定长度和形状的全1数组
import numpy as np
a = np.ones([3,3])#创建一个3*3的全1数组
print(a)
【运行结果】
2、ndarray数组的属性
shape
数组的形状
import numpy as np
a = np.ones([3,3])#创建一个3*3的全1数组
print(a.shape)
【运行结果】
dtype
数组的数据类型
import numpy as np
a = np.ones([3,3])
print(a.dtype)
【运行结果】
size
数组中包含元素的个数,其大小等于各个维数的乘积
import numpy as np
a = np.ones([3,3])
print(a.size)
【运行结果】
ndim
数组的维度大小,其大小等于shape所包含的元素个数
import numpy as np
a = np.ones([3,3])
print(a.ndim)
【运行结果】
改变数组的形状和数据类型
改变形状用reshape(数组的切片)
import numpy as np
a = np.ones([3,3])
print('原数组形状',a.shape)
a = a.reshape([1,9])
print('当前数组形状',a.shape)
【运行结果】
改变数据类型用astype
import numpy as np
a = np.ones([3,3])
print('原数组类型',a.dtype)
a = a.astype(np.int64)
print('当前数组类型',a.dtype)
【运行结果】
3、标量和ndarray数组之间的运算
标量与数组的4种运算(加减乘除)
标量与数组内的每一个元素都运算
import numpy as np
a = np.ones([3,3])
b = 2.0+a
c = 2.0-a
d = 2.0*a
e = 2.0/a
print('原数组为:\n',a)
print('2+数组:\n',b)
print('2-数组:\n',c)
print('2*数组:\n',d)
print('2/数组:\n',e)
【运行结果】
数组与数组的运算
对应元素之间进行运算
import numpy as np
a = np.ones([3,3])
b = np.zeros([3,3])
c = a+b
d = a*b
print('数组a:\n',a,'\n数组b:\n',b)
print('a+b:\n',c)
print('a*b:\n',d)
【运行结果】
4、ndarray数组的统计方法
mean
计算算数平均数
import numpy as np
a = np.ones([3,3])
#两种表示方法
print(np.mean(a))
print(a.mean())
【运行结果】
std var
std:标准差 var:方差
import numpy as np
a = np.arange(0,10,2)
print('测试数组为:\n',a)
print('标准差为:',a.std())
print('方差为:',a.var())
【运行结果】
sum
求和
import numpy as np
a = np.arange(0,10,2)
print('测试数组为:\n',a)
print('求和为:',a.sum())
【运行结果】
max min
max:最大值 min:最小值
import numpy as np
a = np.arange(0,10,2)
print('测试数组为:\n',a)
print('最大值为:',a.max())
print('最小值为:',a.min())
【运行结果】
argmin argmax
最小值、最大值索引
import numpy as np
a = np.arange(0,10,2)
print('测试数组为:\n',a)
print('最大值索引为:',a.argmax())
print('最小值索引为:',a.argmin())
【运行结果】
cumsum cumprod
累加和累积(看运行结果)
import numpy as np
a = np.arange(0,10,2)
print('测试数组为:\n',a)
print('累加为:',a.cumsum())
print('累积为:',a.cumprod())
【运行结果】
二、np.random随机数
1、随机数组
均匀分布
import numpy as np
a = np.random.rand(10)
print(a)
【运行结果】
指定取值范围和形状
import numpy as np
a = np.random.uniform(low=-1.0,high=1.0,size=(3,3))#low下限,high上限,size形状
print(a)
【运行结果】
正态分布
import numpy as np
a = np.random.randn(9)
print(a)
【运行结果】
指定均值loc和方差scale
import numpy as np
a = np.random.normal(loc=2.0,scale=2.0,size=(3,3))
print(a)
【运行结果】
2、随机打乱顺序
import numpy as np
a = np.arange(0,10)
print('原数组a为:\n',a)
np.random.shuffle(a)
print('随机打乱顺序后:\n',a)
【运行结果】
3、随机选取元素
import numpy as np
a = np.arange(0,10)
print('原数组a为:\n',a)
b = np.random.choice(a)
print('随机选取的元素为:',b)
【运行结果】
三、线性代数
diag 求对角线元素
以一维数组的形式返回方阵的对角线元素
import numpy as np
a = np.arange(1,10)
a = a.reshape([3,3])
b = np.diag(a)
print('测试方阵为:\n',a)
print('对角线元素为:',b)
【运行结果】
dot 矩阵乘法
矩阵乘法
import numpy as np
a = np.arange(0,12)
b = a.reshape([3,4])
c = a.reshape([4,3])
d = b.dot(c)
print('矩阵b:\n',b)
print('矩阵c:\n',c)
print('矩阵b*矩阵c:\n',d)
【运行结果】
trace 对角元素之和
计算对角元素的和
import numpy as np
a = np.arange(1,10)
b = a.reshape([3,3])
c = np.trace(b)
print('测试方阵为:\n',b)
print('矩阵b的对角元素的和为:',c)
【运行结果】
det 矩阵行列式
计算矩阵的行列式
import numpy as np
a = np.arange(1,10)
b = a.reshape([3,3])
c = np.linalg.det(b)
print('矩阵b的行列式为:',c)
【运行结果】
eig 特征值和特征向量
计算方阵的特征值和特征向量
import numpy as np
a = np.arange(1,10)
b = a.reshape([3,3])
c = np.linalg.eig(b)
print('测试方阵为:\n',b)
print('矩阵b的特征值和特征向量:\n',c)
【运行结果】
inv 方阵的逆
计算方阵的逆
import numpy as np
a = np.random.rand(3,3)
b = np.linalg.inv(a)
print('测试方阵为:\n',a)
print('矩阵b的逆矩阵为:\n',b)
【运行结果】
记得点赞、关注、评论、收藏、转发😊😊