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

网站建设和客户对接内容建设企业网站首页

网站建设和客户对接内容,建设企业网站首页,西部数码网站管理助手 mysql,网站排名查询alexa四阶#xff1a;机器学习 - 深度学习 第一章 numpy 一、numpy 概述 Numerical Python#xff0c;数值的 Python#xff0c;补充了 Python 语言所欠缺的数值计算能力。 Numpy 是其它数据分析及机器学习库的底层库。 Numpy 完全标准 C 语言实现#xff0c;运行效率充分优…四阶机器学习 - 深度学习 第一章 numpy 一、numpy 概述 Numerical Python数值的 Python补充了 Python 语言所欠缺的数值计算能力。 Numpy 是其它数据分析及机器学习库的底层库。 Numpy 完全标准 C 语言实现运行效率充分优化。 Numpy 开源免费。 1. numpy 历史 1995 年NumericPython 语言数值计算扩充。 2001 年Scipy-Numarray多维数组运算。 2005 年NumericNumarray-Numpy。 2006 年Numpy 脱离 Scipy 成为独立的项目。 2. numpy 的核心多维数组 数值计算 代码简洁减少 Python 代码中的循环。 底层实现厚内核(C)薄接口(Python)保证性能。 二、numpy 基础 ndarray 数组 1. 内存中的 ndarray 对象 元数据metadata 存储对目标数组的描述信息如ndim、dimensions、dtype、data 等。 实际数据 完整的数组数据 将实际数据与元数据分开存放一方面提高了内存空间的使用效率另一方面减少对实际数据的访问频率提高性能。 2. ndarray 数组对象的特点 Numpy 数组是同质数组即所有元素的数据类型必须相同 Numpy 数组的下标从 0 开始最后一个元素的下标为数组长度减 1 3. ndarray 数组对象的创建 np.array(任何可被解释为 Numpy 数组的逻辑结构) import numpy as np a np.array([1, 2, 3, 4, 5, 6]) print(a) # [1 2 3 4 5 6]np.arange(起始值(0),终止值,步长(1)) import numpy as np a np.arange(0, 5, 1) print(a) # [0 1 2 3 4] b np.arange(0, 10, 2) print(b) # [0 2 4 6 8]np.zeros(数组元素个数, dtype‘类型’) import numpy as np a np.zeros(10) print(a) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]np.ones(数组元素个数, dtype‘类型’) import numpy as np a np.ones(10) print(a) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]4. ndarray 对象属性的基本操作 数组的维度 np.ndarray.shape import numpy as np ary np.array([1, 2, 3, 4, 5, 6]) print(type(ary), ary, ary.shape) # class numpy.ndarray [1 2 3 4 5 6] (6,) #二维数组 ary np.array([[1,2,3,4],[5,6,7,8] ]) print(type(ary), ary, ary.shape)class numpy.ndarray [[1 2 3 4][5 6 7 8]] (2, 4)元素的类型 np.ndarray.dtype import numpy as np ary np.array([1, 2, 3, 4, 5, 6]) print(type(ary), ary, ary.dtype) # class numpy.ndarray [1 2 3 4 5 6] int64 #转换ary元素的类型 b ary.astype(float) print(type(b), b, b.dtype) # class numpy.ndarray [1. 2. 3. 4. 5. 6.] float64 #转换ary元素的类型 c ary.astype(str) print(type(c), c, c.dtype) # class numpy.ndarray [1 2 3 4 5 6] U21数组元素的个数 np.ndarray.size import numpy as np ary np.array([[1,2,3,4],[5,6,7,8] ]) #观察维度sizelen的区别 print(ary.shape, ary.size, len(ary)) # (2, 4) 8 2数组元素索引(下标) 数组对象[…, 页号, 行号, 列号] 下标从 0 开始到数组 len-1 结束。 import numpy as np a np.array([[[1, 2],[3, 4]],[[5, 6],[7, 8]]]) print(a, a.shape) print(a[0]) print(a[0][0]) print(a[0][0][0]) print(a[0, 0, 0]) for i in range(a.shape[0]):for j in range(a.shape[1]):for k in range(a.shape[2]):print(a[i, j, k]) [[[1 2][3 4]][[5 6][7 8]]] (2, 2, 2) [[1 2][3 4]] [1 2] 1 1 1 2 3 4 5 6 7 85. ndarray 对象属性操作详解 Numpy 的内部基本数据类型 类型名类型表示符布尔型bool_有符号整数型int8(-128~127) / int16 / int32 / int64无符号整数型uint8(0~255) / uint16 / uint32 / uint64浮点型float16 / float32 / float64复数型complex64 / complex128字串型str_每个字符用 32 位 Unicode 编码表示日期类型datetime64 自定义复合类型 列与列之间可以是不同的类型但是在同一列内类型必须 # 自定义复合类型 import numpy as npdata[(zs, [90, 80, 85], 15),(ls, [92, 81, 83], 16),(ww, [95, 85, 95], 15) ] #第一种设置dtype的方式 a np.array(data, dtypeU3, 3int32, int32) print(a) print(a[0][f0], :, a[1][f1]) print()#第二种设置dtype的方式 c np.array(data, dtype{names: [name, scores, ages],formats: [U3, 3int32, int32]}) print(c[0][name], :, c[0][scores], :, c.itemsize) print()#测试日期类型数组 f np.array([2011, 2012-01-01, 2013-01-01 01:01:01,2011-02-01]) f f.astype(M8[D]) f f.astype(i4) print(f[3]-f[0])f.astype(bool) [(zs, [90, 80, 85], 15) (ls, [92, 81, 83], 16)(ww, [95, 85, 95], 15)] zs : [92 81 83]zs : [90 80 85] : 2831类型字符码 类型字符码np.bool_?np.int8/16/32/64i1 / i2 / i4 / i8np.uint8/16/32/64u1 / u2 / u4 / u8np.float/16/32/64f2 / f4 / f8np.complex64/128c8 / c16np.str_Unp.datetime64M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s] 不会修改原始数据的维度 视图变维 数据共享 复制变维 数据独立 直接修改原始数据的维度 就地变维 5.1 ndarray 数组维度操作 视图变维数据共享 reshape() 与 ravel() import numpy as np a np.arange(1, 9) print(a) # [1 2 3 4 5 6 7 8] b a.reshape(2, 4) #视图变维 : 变为2行4列的二维数组 print(b) c b.reshape(2, 2, 2) #视图变维 变为2页2行2列的三维数组 print(c) d c.ravel() #视图变维 变为1维数组 print(d)[1 2 3 4 5 6 7 8] [[1 2 3 4][5 6 7 8]] [[[1 2][3 4]][[5 6][7 8]]] [1 2 3 4 5 6 7 8]复制变维数据独立 flatten() e c.flatten() print(e) a 10 print(a, e, sep\n)[1 2 3 4 5 6 7 8] [11 12 13 14 15 16 17 18] [1 2 3 4 5 6 7 8]就地变维直接改变原数组对象的维度不返回新数组 a.shape (2, 4) print(a) a.resize(2, 2, 2) print(a)[[11 12 13 14][15 16 17 18]] [[[11 12][13 14]][[15 16][17 18]]]5.2 ndarray 数组索引操作切片 数组对象切片的参数设置与列表切面参数类似 步长默认切从首到尾步长-默认切从尾到首 数组对象[起始位置:终止位置:步长, …] 默认位置步长1 三维数组[页的索引行的索引列的索引] 三维数组[页的切片行的切片列的切片] import numpy as np a np.arange(1, 10) print(a) # 1 2 3 4 5 6 7 8 9 print(a[:3]) # 1 2 3 print(a[3:6]) # 4 5 6 print(a[6:]) # 7 8 9 print(a[::-1]) # 9 8 7 6 5 4 3 2 1 print(a[:-4:-1]) # 9 8 7 print(a[-4:-7:-1]) # 6 5 4 print(a[-7::-1]) # 3 2 1 print(a[::]) # 1 2 3 4 5 6 7 8 9 print(a[:]) # 1 2 3 4 5 6 7 8 9 print(a[::3]) # 1 4 7 print(a[1::3]) # 2 5 8 print(a[2::3]) # 3 6 9多维数组的切片操作 import numpy as np a np.arange(1, 28) a.resize(3,3,3) print(a) #切出1页 print(a[1, :, :]) #切出所有页的1行 print(a[:, 1, :]) #切出0页的1行1列 print(a[0, :, 1]) [[[ 1 2 3][ 4 5 6][ 7 8 9]][[10 11 12][13 14 15][16 17 18]][[19 20 21][22 23 24][25 26 27]]] [[10 11 12][13 14 15][16 17 18]] [[ 4 5 6][13 14 15][22 23 24]] [2 5 8]ndarray 数组的掩码操作 import numpy as np a np.arange(1, 10) mask [True, False,True, False,True, False,True, False,True] print(a[mask]) # [1 3 5 7 9]6. 多维数组的组合与拆分 垂直方向操作 import numpy as np a np.arange(1, 7).reshape(2, 3) b np.arange(7, 13).reshape(2, 3) # 垂直方向完成组合操作生成新数组 c np.vstack((a, b)) # 垂直方向完成拆分操作生成两个数组 d, e np.vsplit(c, 2) print(a) print(b) print(c) print(d) print(e)[[1 2 3][4 5 6]] [[ 7 8 9][10 11 12]] [[ 1 2 3][ 4 5 6][ 7 8 9][10 11 12]] [[1 2 3][4 5 6]] [[ 7 8 9][10 11 12]]水平方向操作 import numpy as np a np.arange(1, 7).reshape(2, 3) b np.arange(7, 13).reshape(2, 3) # 水平方向完成组合操作生成新数组 c np.hstack((a, b)) # 水平方向完成拆分操作生成两个数组 d, e np.hsplit(c, 2) print(a) print(b) print(c) print(d)[[1 2 3][4 5 6]] [[ 7 8 9][10 11 12]] [[ 1 2 3 7 8 9][ 4 5 6 10 11 12]] [[1 2 3][4 5 6]] [[ 7 8 9][10 11 12]]深度方向操作3 维 import numpy as np a np.arange(1, 7).reshape(2, 3) b np.arange(7, 13).reshape(2, 3) # 深度方向3维完成组合操作生成新数组 i np.dstack((a, b)) # 深度方向3维完成拆分操作生成两个数组 k, l np.dsplit(i, 2)[[1 2 3][4 5 6]] [[ 7 8 9][10 11 12]] [[[ 1 7][ 2 8][ 3 9]][[ 4 10][ 5 11][ 6 12]]] [[[1][2][3]][[4][5][6]]] [[[ 7][ 8][ 9]][[10][11][12]]]多维数组组合与拆分的相关函数 # 通过axis作为关键字参数指定组合的方向取值如下 # 若待组合的数组都是二维数组 # 0: 垂直方向组合 # 1: 水平方向组合 # 若待组合的数组都是三维数组 # 0: 垂直方向组合 # 1: 水平方向组合 # 2: 深度方向组合 res np.concatenate((a, b), axis0) print(res) # 通过给出的数组与要拆分的份数按照某个方向进行拆分axis的取值同上 result np.split(c, 2, axis0) print(result)[[ 1 2 3][ 4 5 6][ 7 8 9][10 11 12]] [array([[1, 2, 3],[4, 5, 6]]), array([[ 7, 8, 9],[10, 11, 12]])]7. ndarray 类的其他属性 shape - 维度 dtype - 元素类型 size - 元素数量 ndim - 维数 itemsize - 元素字节数 nbytes - 总字节数 size x itemsize real - 复数数组的实部数组 imag - 复数数组的虚部数组 T - 数组对象的转置视图 flat - 扁平迭代器 import numpy as np a np.array([[1 1j, 2 4j, 3 7j],[4 2j, 5 5j, 6 8j],[7 3j, 8 6j, 9 9j]]) print(a.shape) print(a.dtype) print(a.ndim) print(a.size) print(a.itemsize) print(a.nbytes) print(a.real, a.imag, sep\n) print(a.T) print([elem for elem in a.flat]) b a.tolist() print(b) (3, 3) complex128 2 9 16 144 [[1. 2. 3.][4. 5. 6.][7. 8. 9.]] [[1. 4. 7.][2. 5. 8.][3. 6. 9.]] [[1.1.j 4.2.j 7.3.j][2.4.j 5.5.j 8.6.j][3.7.j 6.8.j 9.9.j]] [(11j), (24j), (37j), (42j), (55j), (68j), (73j), (86j), (99j)] [[(11j), (24j), (37j)], [(42j), (55j), (68j)], [(73j), (86j), (99j)]]
http://www.hkea.cn/news/14486975/

相关文章:

  • 网站推广的常用方法有哪些做外贸自己的公司网站
  • 长春建站方案网站优化seo推广服务
  • 重庆梁平网站建设费用seo网站营销推广
  • 专业网站建设教程百度推广免费建站
  • 驾校视频网站模板四网一体网站建设方案
  • 在线咨询网站开发价格wordpress 数据库下载
  • 手机网站百度关键词排名wordpress如何替换掉网址
  • 帝国cms 网站搬家哪个网站做房子团购
  • 网站建设及优化方案长沙seo管理
  • 网站平台结构牛商网做的网站怎么样
  • 织梦网站图片修改vs2015网站开发
  • 户县住房和城乡建设局官方网站南宁有做门户网站的公司吗
  • 河源新闻最新消息wordpress做seo好做
  • 建设asp网站视频教程宁夏交通建设质监局官方网站
  • asp网站开发的开发环境北京网站的网站建设公司
  • 旅游网站建设外现状在网站开发中哪里需要js文件
  • 一键建站源码做网站去哪个公司
  • 创建网站的流程有哪些优惠网站如何做
  • 甘肃省建设厅质量投诉网站做国际贸易如何建网站
  • 现在流行的网站开发制作工具pta编程网站
  • 新乡网站优化公司宁夏建设工程造价站网站
  • 随州网站建设推荐wordpress可视化文章
  • 杭州学校网站开发wordpress谷歌字体优化
  • 如何做网站吸引广告商长沙网站建设长沙建设银行
  • 自己的域名搭建网站英文建站软件
  • 建网站与发布网站wordpress重新
  • 手机网站模板cms汕头网站建设网站建设
  • 网页设计与网站建设试卷套模板做网站流程
  • 领先的手机网站设计wordpress 腾讯地图插件
  • 锐旗网站建设微信优惠券网站怎么做的