当前位置: 首页 > wzjs >正文

郑州网站建设企业渠道推广费用咨询

郑州网站建设企业,渠道推广费用咨询,wordpress用lnmp还是lamp,wordpress 获取插件路径PyTorch基础知识 Numpy基础NumPy 基本数据类型Numpy数组 NumPy 基础数组创建Numpy特殊数组创建Numpy数组的访问NumPy数组的遍历Numpy数组的常用属性比较常用的属性有: Numpy数组的基本操作Numpy数组的数学操作加减乘除 Numpy线性代数Numpy广播机制 Numpy基础 NumPy…

PyTorch基础知识

  • Numpy基础
    • NumPy 基本数据类型
    • Numpy数组
  • NumPy 基础数组创建
  • Numpy特殊数组创建
  • Numpy数组的访问
  • NumPy数组的遍历
  • Numpy数组的常用属性
    • 比较常用的属性有:
  • Numpy数组的基本操作
  • Numpy数组的数学操作
    • 加减乘除
  • Numpy线性代数
  • Numpy广播机制

Numpy基础

NumPy(Numerical Python)是 Python 语言中用于科学计算的一个重要基础库,它提供了高性能的多维数组对象,以及用于处理这些数组的各种工具和函数。

NumPy 基本数据类型

  • bool_ 布尔型数据类型(True 或者 False)
  • int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
  • int8 字节(-128 to 127)
  • int16 整数(-32768 to 32767)
  • int32 整数(-2147483648 to 2147483647)
  • int64 整数(-9223372036854775808 to 9223372036854775807)
  • uint8 无符号整数(0 to 255)
  • uint16 无符号整数(0 to 65535)
  • uint32 无符号整数(0 to 4294967295)
  • uint64 无符号整数(0 to 18446744073709551615)
  • float_ float64 类型的简写
  • float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
  • float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
  • float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
  • complex_ complex128 类型的简写,即 128 位复数
  • complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
  • complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)
    numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括
    np.bool_np.int32,np.float32,等等。

Numpy数组

  • NumPy 数组是一个多维数组对象。称为 Ndarray,由数组实际数据与描述这些
    数据的元数据组成.
  • ⼀般来说,⼤部分操作仅针对于元数据,⽽不改变底层实际的数据。
    元数据:元数据就是描述数据的数据,比如说数组的形状、数据类型等等实际的数据说的是存储在内存中的实际数据内容,numpy里面的一些操作,比如说切片,他是创建一个新的视图,不是修改原始数据的存储位置
  • 需要注意的是,NumPy 数组的下标起始位 0,同⼀个 NumPy 数组中的所有元素
    类型必须相同,NumPy 数组的创建访问中 () 与 [] 功能没有什么区别。

NumPy 基础数组创建

Numpy数组有很多中创建方式,一般常⽤的⽅式是将 list 转换为 np.array:

import numpy as np
a = [1,2,3]
b = np.array(a)
c = np.array([1,2,3])
print("b:",b)
print("c:",c)# 输出:
b: [1 2 3]
c: [1 2 3]

两种方式输出的内容都是一样的

  • 创建多维数组
a1 = np.array([(1,2,3),(4,5,6),(7,8,9)])
a1
# 跟C语言多维数组一个理解方式
# 输出
array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])

Numpy特殊数组创建

NumPy 提供了⼀些使⽤占位符创建数组的函数,这些数组在机器学习中是⽐较常⻅的。在创建过程中我们同样可以使⽤ dtype = int 指定元素类型:

  • 创建一个全是0的数组
a2 = np.zeros((5,3),dtype=int) #创建一个五行三列的数组,元素类型是int
a2
#输出
array([[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0]])
  • 创建一个全是1的数组
a3 = np.ones((3,3),dtype=float)#创建一个三行三列,元素类型为float的数组
a3
#输出
array([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]])
  • 创建等差数列
a4 = np.arange(1,11,2)#创建一个从1开始,11结束,差值为2的等差数列
a4
array([1, 3, 5, 7, 9])
  • 创建单位矩阵(矩阵的乘法中,有⼀种矩阵起着特殊的作⽤,如同数的乘法中的 1,这种矩阵被称为单位矩阵。它是个⽅阵,从左上⻆到右下⻆的对⻆线(称为主对⻆线)上的元素均为 1)
a = np.eye(4) #创建一个四行四列的单位矩阵
a
array([[1., 0., 0., 0.],[0., 1., 0., 0.],[0., 0., 1., 0.],[0., 0., 0., 1.]])
  • [0,1)之间的随机数组
a5 = np.random.random(5)#生成指定长度,在[0,1)之间平均分布的随机数组
a5
#输出
array([0.53019882, 0.70241453, 0.08357814, 0.69802226, 0.85959921])
  • 生成指定长度,符合正态分布的随机数组
a6 = np.random.normal(0,0.1,5)#生成其均值为0,标准差为0.1的随机数组
a6
#输出
array([-0.15249953, -0.0443617 , -0.20765963,  0.05754567,  0.05691443])

Numpy数组的访问

和 list 的访问形式基本⼀致,⽀持切⽚操作,我们可以切⽚每⼀个维度,索引每⼀个维度

a7 = np.array([(1,3,4),(5,8,7),(8,9,7)])
a7[:2]#输出array数组的前两个数组
#输出
array([[1, 3, 4],[5, 8, 7]])
a7[:,2]#输出每一行的第三个元素,组成一个数组
#输出
array([4, 7, 7])
a7[:,:2]#输出每一行每一列的前两个元素,组成一个数组
#输出
array([[1, 3],[5, 8],[8, 9]])

NumPy数组的遍历

一维数组的遍历我们大家都知道

a = np.array([1,2,3,4])
for i in a:print(i)
  • 多维数组的遍历
a8 = np.array([(1,2,3),(3,4,5)])
i,h,k = a8[0]#可以使用直接赋值遍历
for i,j,k in a8:print(i*j*k)

Numpy数组的常用属性

比较常用的属性有:

ndarray.ndim : 数组的维度(数组轴的个数),等于秩
ndarray.shape : 数组的⼤⼩。为⼀个表⽰数组在每个维度上⼤⼩的整数元组。例如⼆维数组中,表⽰数组的ʼ ⾏数ʼ 和ʼ 列数ˮ
ndarray.size : 数组元素的总个数,等于 shape 属性中元组元素的乘积
ndarray.dtype : 表⽰数组中元素类型的对象

a8 = np.array([(1,2,3),(3,4,5)])
print("ndim:", a.ndim)
print("shape:", a.shape)
print("size", a.size)
print("dtype", a.dtype)

Numpy数组的基本操作

  • in:检测数值是否在数组中
a9 = np.array([[0,2,3,4]])
print(5 in a9)
print(3 in a9)
#输出
False
True
  • reshape:数组的重排列,例如将一个3维数组转变成1维(元素数一定要保持不变)
a8 = np.array([(1,2,3),(3,4,5)])
a8.reshape(1,6)#把两行三列的数组变成一行六列的
#输出
array([[1, 2, 3, 3, 4, 5]])
  • tanspose:转置(T)
a8 = np.array([(1,2,3),(3,4,5)])
a8.transpose()
a8.T
  • flatten:把多维数组转换成一维数组,注意每个元组的长度是相同的
a8.flatten()
#输出
  • newaxis:增加维度
a = np.array([[1,2,3],[2,3,5]])
a.shape
a = a[np.newaxis]#在前面加一个维度
#输出
#(1, 2, 3)
a = a[:,np.newaxis,:]#在中间加一个维度
#输出
#(2, 1, 3)
a.shape

Numpy数组的数学操作

加减乘除

  • *表示矩阵内各位置对应相乘,点承表示求矩阵内积,二维数组称为矩阵积
a = np.ones((2,2))
b = np.array([(1,1),(3,3,)])
print(a)
print(b)
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a.sum())
print(a.prod())```
#输出
[[1. 1.][1. 1.]]
[[1 1][3 3]]
[[2. 2.][4. 4.]]
[[ 0.  0.][-2. -2.]]
[[1. 1.][3. 3.]]
[[1.         1.        ][0.33333333 0.33333333]]
4.0
1.0
  • 平均数,⽅差,标准差,最⼤值,最⼩值
import numpy as np
a = np.array([5,2,1])
print("mean:",a.mean())#平均数
print("var:", a.var())#方差
print("std:", a.std())#标准差
print("max:", a.max())
print("min:", a.min())
  • 最⼤与最⼩值对应的索引值:argmax,argmin。取元素值上限,下限,四舍五⼊:ceil, floor, rint
a = np.array([1.2,2.2,3.5])
print("argmax:",a.argmax())#最大的索引值
print("argmin:",a.argmin())#最小的索引值
print("ceil:",np.ceil(a))#取元素值的上限
print("floor:",np.floor(a))#取元素值的下限
print("rint:",np.rint(a))#四舍五入
#输出
a = np.array([1.2,2.2,3.5])
print("argmax:",a.argmax())#最大的索引值
print("argmin:",a.argmin())#最小的索引值
print("ceil:",np.ceil(a))#取元素值的上限
print("floor:",np.floor(a))#取元素值的下限
print("rint:",np.rint(a))#四舍五入

除了上述函数外,还有很多数据运算操作,它们的使⽤⽅式基本都类似,例如:abs, sign, sqrt, log,log10, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh,arctanh 等等。

Numpy线性代数

矩阵 (matrix) 是 array 的分⽀,matrix 和 array 在很多时候都是通⽤的,⽤哪⼀个都⼀样。官⽅建议⼤家如果两个可以通⽤,那就选择 array,因为 array 更灵活,速度更快。
array 的优势就是不仅仅表⽰⼆维,还能表⽰ 3、4、5… 维,⽽且在⼤部分 Python 程序⾥,array 也是更常⽤的。
dot : 矩阵乘法,对于两个⼀维的数组,计算的是这两个数组对应下标元素的乘积和 (数学上称之为内积);
对于⼆维数组,计算的是两个数组的矩阵乘积;
对于多维数组,它的通⽤计算公式如下,即结果数组中的每个元素都是:数组 a 的最后⼀维上的所有元素与数组 b 的倒数第⼆位上的所有元素的乘积和:dot(a, b)[i,j,k,m]= sum(a[i,j,:] * b[k,:,m])

m1 = np.array([[1,2],[3,4]],dtype = np.float32)
m2 = np.array([[5,6],[7,8]],dtype = np.float32)
result_dot = np.dot(m1,m2)
result_at = m1@m2
print("矩阵 1")
print(m1)
print("矩阵 2")
print(m2)
print("使⽤ np.dot 得到的矩阵乘法结果:")
print(result_dot)
#输出
矩阵 1
[[1. 2.][3. 4.]]
矩阵 2
[[5. 6.][7. 8.]]
使⽤ np.dot 得到的矩阵乘法结果:
[[19. 22.][43. 50.]]

Numpy广播机制

⼴播 (Broadcast) 是 numpy 对不同形状 (shape) 的数组进⾏数值计算的⽅式,对数组的算术运算通常在相应的元素上进⾏。如果两个数组 a 和 b 形状相同,即满⾜ a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的⻓度相同。

a = np.array([(1,2),(4,5),(1,1)])
b = np.array([1,2])# shape(2)→→ shape(1,2) →→ shape(3,2)
a+b
#输出
array([[2, 4],[5, 7],[2, 3]])
http://www.dtcms.com/wzjs/35269.html

相关文章:

  • 辽宁做网站临沂色度广告有限公司
  • 网站建设制作一个网站的费用排名
  • 做公司网站需要了解哪些东西百度关键词竞价排名
  • 手机wap网站制作营业推广怎么写
  • odoo网站建设百度推广技巧方法
  • 网站查询空间商手机百度网盘下载慢怎么解决
  • 怎么做网站广告古董优化设计答案六年级上册
  • 中小型网站建设郑州seo排名工具
  • 网盟推广图片郑州网站优化
  • 常宁市住房城乡建设委官方网站南宁seo推广公司
  • 玩具网站建设方案百度公司推广
  • 做网站需要具备的基础条件网络推广接单平台
  • 免费做网站公司ydwzjs产品质量推广营销语
  • flask 网站开发百度人工服务电话
  • 织梦 网站栏目管理广州营销推广
  • 平价网站建设google中文搜索引擎入口
  • asp大型网站开发网站注册地址查询
  • 手机网站一年费用吗谷歌优化排名公司
  • 海洋优质的网站建设谷歌商店下载
  • 企业网站模板免费下载企业网站模板南京seo优化
  • 福州建设工程协会网站查询2022网站快速收录技术
  • led网站建设长尾关键词挖掘精灵官网
  • 智慧园区 展厅设计高州网站seo
  • 如何做彩票网站的源码个人网站
  • 做音乐的网站徐州百度推广
  • 做网站搜索如何显示官网网站平台做推广
  • 徐州优化网站建设百度问一问人工客服怎么联系
  • 新浪微博网页版百度关键词优化排名
  • 个人网站备案后可以随意建站吗整站优化全网营销
  • 有什么做任务得佣金的网站seo课程哪个好