
NumPy库导入库其实就是数组import numpy as npNumPy库中的函数要在函数名前加上np.数据类型整数型数组与浮点数数组import numpy as np arr1np.array([1,2,3]) print(arr1)import numpy as np arr2np.array([1.0,2,3]) print(arr2)浮点数数组只要有一个为浮点数则这个数组为浮点数数组同化定理往整数数组里面插入浮点数则这个浮点数会自动变成整数往浮点数数组里面插入整数则这个整数会变成浮点数import numpy as np arr2np.array([1.0,2,3]) arr2[2]5 print(arr2)数组不能直接通过arr[索引]来添加元素 数组大小是不可变的 只能通过这个np.append(arr, 1)共同改变定理整数型数组和浮点型数组相互转换采用规范的方法是.astype()import numpy as np arrnp.array([1,2,3]) print(arr) arr2arr.astype(float) print(arr2)除规范方法外还有其余方法让整数型数组与浮点数做运算整数型数组遇到除法整数型数组与浮点数数组做运算import numpy as np arrnp.array([1,2,3]) print(arr) arrarr1.0 print(arr)import numpy as np arrnp.array([1,2,3]) print(arr) arrarr/1 print(arr)import numpy as np arrnp.array([1,2,3]) print(arr) arr2np.array([1.0,1,2]) arrarrarr2 print(arr)数组维度一维数组向量一维数组使用一层中括号表示形状参数为 x或x,)二维数组矩阵二维数组使用二层中括号表示 形状参数为(x,y)三维数组使用三层中括号表示 形状参数为(x,y,z)np.ones(shape) 创建指定形状的数组所有元素初始化为 1.0import numpy as np arrnp.ones(3)#传入一维数组的形状为3 print(arr)import numpy as np arrnp.ones((3,5))#传入二维数组的形状为3行5列 print(arr)[[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]]arr3 np.ones((1,1,3)) # 传入形状(1,1,3)print(arr3) # 造出三维数组[[[1. 1. 1.]]]使用数组的.shape属性查看数组的形状import numpy as np arrnp.ones((3,5))#传入二维数组的形状为3行5列 print(arr) print(arr.shape)不同维度的数组之间的转换使用数组的.reshape()方法需传入重塑后的形状shape这个方法可以在给定一个维度的值后剩一个维度可以用-1它会自己去计算import numpy as np arrnp.arange(10)#左开右闭 print(arr) arr1arr.reshape((2,-1)) print(arr1) arr3arr1.reshape(-1) print(arr3)数组的创建创建指定数组np.array()一维数组import numpy as np arrnp.array([1,2,3]) print(arr)二维数组import numpy as np arrnp.array([[1,2,3]])#行矩阵 arr1np.array([[1],[2],[3]])#列矩阵 arr2np.array([[1,2,3],[4,5,4],[6,7,3]])#3行3列的矩阵 print(arr) print(arr1) print(arr2)创建递增数组使用np.arange()进行创建 arange全称是array_range一维数组import numpy as np arr1np.arange(10)#左闭右开 和range是异曲同工之妙 print(arr1)二维数组import numpy as np arr1np.arange(10)#左闭右开 print(arr1) arr2arr1.reshape(2,-1) print(arr2)创建同值数组使用np.zeros()函数 和 np.ones()import numpy as np arrnp.zeros(3) print(arr) arr2np.zeros(3)2 print(arr2) arr3np.zeros((2,3)) print(arr3) arr4np.ones((3,3))*3 print(arr4)创建随机数组使用np.random()import numpy as np arr1np.random.random(5)#0-1均匀分布的浮点型随机数组 arr2np.random.randint(10,100,5)#10-100 随机分布的随机数组 arr4np.random.randint(10,100,(3,3)) arr3np.random.normal(0,1,(2,3))#服从正态分布的随机数组 print(arr1) print(arr2) print(arr4) print(arr3)数组的索引访问数组元素正常索引索引从0开始访问Numpy数组元素使用中括号arr[0]:一维数组的第1个元素arr[0,2]二维数组的第一行第三列元素花式索引正常索引用一个中括号花式索引用两个中括号import numpy as np arr1np.arange(0,90,10) print(arr1) print(arr1[[0,2]])#花式索引用两个中括号结果为第1个和第三个元素import numpy as np arr1np.arange(1,17).reshape((4,4)) print(arr1) print(arr1[[0,1],[0,1]])#输出第1行第一列元素 输出第二行第二列元素 print(arr1[[0,1,2],[2,1,0]])#输出第一行第三列元素 输出第二行第二列元素 输出第三行第1列元素 #修改数组元素 arr1[[0,1,2],[2,1,0]]100 print(arr1)数组的切片一维数组的切片 arr[起始位置终止位置] 左闭右开import numpy as np arrnp.arange(0,10) print(arr[1:4]) print(arr[:4]) print(arr[2:-1]) print(arr[::2])#每隔三个元素采样二维数组 arr[1:3,1:-1] 前为行切 后为列1切import numpy as np arrnp.arange(0,9).reshape(3,3) print(arr) print(arr[1:2,1:2]) arr1np.arange(0,21).reshape(3,-1) print(arr1) print(arr1[::1,::2])#跳跃采样 前为行跳跃 后为列跳跃 print(arr1[0:2,:])#提取第一行到第2行 左闭右开数组切片仅是视图如果需要为切片创建新变量使用.copy()方法import numpy as np arrnp.arange(0,9).reshape(3,3) print(arr) print(arr[1:2,1:2]) arr1np.arange(0,21).reshape(3,-1) print(arr1) print(arr1[::1,::2])#跳跃采样 前为行跳跃 后为列跳跃 print(arr1[0:2,:])#提取第一行到第2行 左闭右开 arr3arr1[0:2,:].copy() print(arr3)当新数组1数组二改变数组1的值数组二的值也会改变解决这个方法也只能用copy()数组的变形数组的转置数组名.T数组的翻转np.flipud() 上下翻转 np.filplr()左右翻转数组的拼接np.concatenate([数组名1数组名2]axis0/1):0表示行拼接 1表示列拼接数组的分裂np.split(数组名[1,2],axis0/1) 0行分裂 1列分裂数组的运算加 -减肥 *乘法 /除法 **幂 //取整 %取余以上这些运算看作是逐个元素之间的运算广播不同形状的数组之间的运算如果是向量与矩阵之间做运算,向量自动升级为行矩阵;如果某矩阵是行矩阵或列矩阵,则其被广播,以适配另一个矩阵的形状。数组的函数矩阵的乘积np.dot()import numpy as np arrnp.arange(0,9).reshape(3,3) arr1np.arange(1,10).reshape(3,3) print(np.dot(arr,arr1))数学函数绝对值函数 np.abs(数组名)三角函数 np.pi np.sin(数组名)指数函数 np.exp(x) 表示e的x次方对数函数np.log(x)聚合函数求最大值 np.max(数组名axis0/10)求和 np.sum(数组名axis0/10) 后面没有axis就是整体求和求平均数 np.mean(数组名axis0/1)后面没有axis就是整体求平均数数组到张量PyTorch不同版本的发行日志:https://pytorch.org/blog/-8.1 数组与张量● 本次课属于《Python深度学习》系列视频,PyTorch作为当前首屈一指的深度学习库,其将NumPy的语法尽数吸收,作为自己处理数组的基本语法,且运算速度从使用CPU的数组进步到使用GPU的张量。● NumPy 和PyTorch的基础语法几乎一致,具体表现为:1 np对应 torch;2 数组 array 对应张量 tensor;3 NumPy 的n维数组对应着PyTorch的n阶张量。● 数组与张量之间可以相互转换:数组 arr 转为张量 ts:tstorch.tensor(arr):张量ts 转为数组 arr: arrnp.array(ts)。8.2 语法不同点为了找到NumPy和PyTorch哪些语法不同,UP对本文档进行了替换操作,将np改为torch,将array改为tensor,并重新运行所有代码,得出结论:PyTorch只是少量修改了NumPy的部分函数或方法,现对其中不同的地方进行罗列。表8-1 PyTorch修正的NumPy 函数或方法NumPy的函数.astype()np.random.random()np.random.randint()np.random.normal()np.random.randn().copy()np.concatenate()np.split()np.dot()np.dot(v,v)np.dot(m,v)np.dot(m,m)np.exp()np.log()np.mean()np.std()PyTorch 的函数.type()torch.rand()torch.randint()torch.normal()torch.randn().clone()torch.cat()torch.split()torch.matmul()torch.dot()torch.mv()torch.mm()torch.exp()torch.log()torch.mean()torch.std()用法区别无无不接纳一维张量不接纳一维张量元无参数合义优化无无无无必须传入张量必须传入张量必须传入浮点型张量必须传入浮点型张量