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

湖北襄阳网站建设网站建设的介绍

湖北襄阳网站建设,网站建设的介绍,免费家装设计效果图,做淘宝客网站要不要备案一、NumPy 简介 NumPy#xff08;Numerical Python#xff09;是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵#xff0c;比 Python 自身的嵌套列表#xff08;nested list structure#xff09;结构要高效的多#xff08;该结构也可以用来表示…一、NumPy 简介 NumPyNumerical Python是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵比 Python 自身的嵌套列表nested list structure结构要高效的多该结构也可以用来表示矩阵matrix支持大量的维度数组与矩阵运算此外也针对数组运算提供大量的数学函数库。使用 NumPy 可以方便的使用数据、矩阵进行计算包含线性代数、傅里叶变化、随机数生成等大量函数。 1. 为什么要使用 NumPy Numpy 是 Python 各种数据科学类库的基础库比如ScipyScikit-Learn、TensorFlow、pandas等。对于同样的数值计算任务使用 NumPy 比直接使用 Python 代码实现有如下优点: 1 代码更简洁NumPy 直接以数组、矩阵为粒度计算并且支撑大量的数学函数而 python 需要用 for 循环从底层实现 2 性能更高效NumPy 的数组存储效率和输入输出计算性能比 Python 使用 List 或者嵌套 List 好很多。这里有两点需要注意需要注意是其一Numpy 的数据存储和 Python 原生的 List 是不一样的。其二NumPy 的大部分代码都是 C 语言实现的这是 Numpy 比纯 Python 代码高效的原因。 2. NumPy 数据类型 NumPy 支持的数据类型比 Python 内置的类型要多很多基本上可以和 C 语言的数据类型对应上其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型: 名称描述bool_布尔型数据类型True 或者 Falseint_默认的整数类型类似于 C 语言中的 longint32 或 int64intc与 C 的 int 类型一样一般是 int32 或 int 64intp用于索引的整数类型类似于 C 的 ssize_t一般情况下仍然是 int32 或 int64int8字节-128 to 127int16整数-32768 to 32767int32整数-2147483648 to 2147483647int64整数-9223372036854775808 to 9223372036854775807uint8无符号整数0 to 255uint16无符号整数0 to 65535uint32无符号整数0 to 4294967295uint64无符号整数0 to 18446744073709551615float_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.int32np.float32等等。 3. NumPy 数组属性 NumPy 数组的维数称为秩rank秩就是轴的数量即数组的维度一维数组的秩为 1二维数组的秩为 2以此类推。在 NumPy 中每一个线性的数组称为是一个轴axis也就是维度dimensions。比如说二维数组相当于是两个一维数组其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴axis第一个轴相当于是底层数组第二个轴是底层数组里的数组。而轴的数量——秩就是数组的维数。很多时候可以声明 axis。axis0表示沿着第 0 轴进行操作即对每一列进行操作axis1表示沿着第1轴进行操作即对每一行进行操作。NumPy 的数组中比较重要 ndarray 对象属性有 属性说明ndarray.ndim秩即轴的数量或维度的数量ndarray.shape数组的维度对于矩阵n 行 m 列ndarray.size数组元素的总个数相当于 .shape 中 n*m 的值ndarray.dtypendarray 对象的元素类型ndarray.itemsizendarray 对象中每个元素的大小以字节为单位ndarray.flagsndarray 对象的内存信息ndarray.realndarray 元素的实部ndarray.imagndarray 元素的虚部ndarray.data包含实际数组元素的缓冲区由于一般通过数组的索引获取元素所以通常不需要使用这个属性 NumPy 定义了一个 n 维数组对象简称 ndarray 对象它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块。ndarray 对象采用了数组的索引机制将数组中的每个元素映射到内存块上并且按照一定的布局对内存块进行排列行或列。 4.NumPy 的 ndarray 对象 二、numpy.array() 创建数组 1. 基础理论 基本的 ndarray 是使用 NumPy 中的数组函数创建的如下所示 numpy.array 它从任何暴露数组接口的对象或从返回数组的任何方法创建一个 ndarray。 numpy.array(object, dtype None, copy True, order None, subok False, ndmin 0)上面的构造器接受以下参数 参数描述object表示一个数组序列dtype可选参数通过它可以更改数组的数据类型copy可选参数当数据源是ndarray时表示数组能否被复制默认是 Trueorder可选参数以哪种内存布局创建数组有 3 个可选值分别是 C行序列、F列序列、A默认subok可选参数类型为bool值默认 False。为 True使用object的内部数据类型False使用object数组的数据类型ndmin可选参数用于指定数组的维度 2.基础操作演示 在代码编写之前我们需要先引入 NumPy。 # 注意默认都会给numpy包设置别名为np import numpy as npNumPy 引入完成后实现 array 创建数组。在 array() 函数当中括号内可以是列表、元组、数组、迭代对象,生成器等。其中列表和元组的整体相同但是列表属于可变序列它的元素可以随时修改或删除元组是不可变序列其中元素不可修改只能整体替换。 1 列表 np.array([1,2,3,4,5]) #array([1, 2, 3, 4, 5])2 元组 np.array((1,2,3,4,5)) #array([1, 2, 3, 4, 5])3 数组 a np.array([1,2,3,4,5]) #创建一个数组 np.array(a) #array([1, 2, 3, 4, 5])4 迭代对象 np.array(range(10)) #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])5 生成器 np.array([i**2 for i in range(10)])​ #array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])当数组内的元素数据类型不相同时那么数组内哪种数据类型存储的结果最大就按哪种数据类型进行存储。如下例子在数组当中包含整型浮点型和字符串其中字符串的数据类型存储结果最大因此数组内的所有元素均按字符串进行存储。 np.array([1,1.5,3,4.5,5]) #array([1, 1.5, 3, 4.5, 5], dtypeU32)1 整型 ar1 np.array(range(10)) # 整型 ar1 #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])2浮点型浮点型的数据存储大于整型的数据存储因此全部转换为浮点型 ar2 np.array([1,2,3.14,4,5]) ar2 #array([1. , 2. , 3.14, 4. , 5. ])3 二维数组嵌套序列列表元组均可 ar3 np.array([[1,2,3],(a,b,c)]) ar3 #array([[1, 2, 3], # [a, b, c]], dtypeU11) 4 当二维数组嵌套序列数量不一致 ar4 np.array([[1,2,3],(a,b,c,d)]) ar4 #array([list([1, 2, 3]), (a, b, c, d)], dtypeobject)上述例子的秩是 1可以通过 ar4.ndim 进行查看。 3. numpy.array() 参数详解 1 设置 dtype 参数默认自动识别。 a np.array([1,2,3,4,5]) print(a) # 设置数组元素类型 has_dtype_a np.array([1,2,3,4,5],dtypefloat) has_dtype_a #[1 2 3 4 5] #array([1., 2., 3., 4., 5.])如果将浮点型的数据设置为整形那么数组内元素会自动舍弃尾数转换为整型数据具体输出如下所示。 np.array([1.1,2.5,3.8,4,5],dtypeint) ​#array([1, 2, 3, 4, 5])2 设置 copy 参数,默认为 True。 我们设置 a 数组然后通过 a 数组复制得出 b 数组此时a 数组和 b 数组的地址不相同创建了新的对象。 那么对 a 数组和 b 数组的任意修改都不会影响另一个数组的元素。 a np.array([1,2,3,4,5]) b np.array(a) print(a:, id(a), b:, id(b)) print(以上看出a和b的内存地址) b[0] 10 print(a) #a: 2066732212352 b: 2066732213152 #以上看出a和b的内存地址 #[1 2 3 4 5]当我们修改 b 数组的元素时a 数组不会发生变化。 b[0] 10 print(a:, a, b:, b) #a: [1 2 3 4 5] b: [10 2 3 4 5]当设置 copy 参数为 Fasle 时不会创建副本两个变量会指向相同的内容地址没有创建新的对象。 此时由于 a 数组和 b 数组指向的是相同的内存地址因此当修改 b 数组的元素时a 数组对应的元素会发生变化。 a np.array([1,2,3,4,5]) b np.array(a, copyFalse) print(a:, id(a), b:, id(b)) print(以上看出a和b的内存地址) b[0] 10 print(a:,a, b:,b) #a: 2066732267520 b: 2066732267520 #以上看出a和b的内存地址 #a: [10 2 3 4 5] b: [10 2 3 4 5]3 ndmin 用于指定数组的维度。 将一维数组转换为二维数组。 a np.array([1,2,3]) print(a)​ a np.array([1,2,3], ndmin2) a​ #[1 2 3] #array([[1, 2, 3]])4 subok 参数类型为 bool 值默认 False。为 True 时使用 object 的内部数据类型False使用 object 数组的数据类型。 首先创建一个 a 矩阵然后输出 a 矩阵的数据类型便于后面的比较。其次通过 a 矩阵生成 at 和 af 两个数组at 数组的 subok 参数设置为 Trueat 数组的 subok 参数不设置即默认为 False。最后输出 at 数组和 af 数组的数据类型用于比较观察。 a np.mat([1,2,3,4]) print(type(a)) ​at np.array(a,subokTrue) af np.array(a) print(at,subok为True:,type(at)) print(af,subok为False:,type(af)) print(id(at),id(a))​ #class numpy.matrix #at,subok为True: class numpy.matrix #af,subok为False: class numpy.ndarray #2066738151720 2066738151608书写代码时需要注意的内容 先定义一个 a 数组。 a np.array([2,4,3,1])在定义 b 数组时如果想复制 a 数组有如下几种方案 1 使用 np.array()。 2 使用数组的 copy() 方法。 b np.array(a) print(b np.array(a),id(b),id(a)) ​c a.copy() print(c a.copy(),id(c),id(a)) #b np.array(a) 2066731363744 2066731901216 #c a.copy() 2066732267520 2066731901216注意不能直接使用 号复制直接使用 号会使 2 个变量指向相同的内存地址。 三、numpy.arange() 生成区间数组 3.1根据 start 与 stop 指定的范围以及 step 设定的步长生成一个 ndarray。 numpy.arange(start, stop, step, dtype)3.2其参数含义如下 序号参数描述说明1start起始值默认为 02stop终止值不包含3step步长默认为 14dtype返回 ndarray 的数据类型如果没有提供则会使用输入数据的类型 3.2示例 1如果只有一个参数那么起始值就是 0终止值就是那个参数步长就是 1。 2如果有两个参数那么第一个参数就是起始值第二个参数就是终止值。 np.arange(10) #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])3可以使用浮点型数值 np.arange(3.1) #array([0., 1., 2., 3.])4返回浮点型的也可以指定类型 x np.arange(5, dtype float) x #array([0., 1., 2., 3., 4.])5设置了起始值、终止值及步长 起始值是 10终止值是 20步长是 2。 np.arange(10,20,2) ​#array([10, 12, 14, 16, 18])起始值是 0终止值是 20步长是 3。 ar2 np.arange(0,20,3) print(ar2) ar3 np.arange(20,step3) #指定传参 ar3 ​#[ 0 3 6 9 12 15 18] #array([ 0, 3, 6, 9, 12, 15, 18])6如果数组太大而无法打印NumPy 会自动跳过数组的中心部分并只打印边角。 np.arange(10000) #array([ 0, 1, 2, ..., 9997, 9998, 9999])四、numpy.linspace() 创建等差数列 4.1返回在间隔 [开始停止] 上计算的 num 个均匀间隔的样本。数组是一个等差数列构成。 np.linspace(start, stop, num50, endpointTrue, retstepFalse, dtypeNone)4.2其参数含义如下 序号参数描述说明1start必填项序列的起始值2stop必填项序列的终止值如果endpoint为true该值包含于数列中3num要生成的等步长的样本数量默认为504endpoint该值为 true 时数列中包含stop值反之不包含默认是True5baset对数 log 的底数6dtypendarray 的数据类型 4.3示例 1以下例子用到三个参数设置起始点为 1 终止点为 10数列个数为 10。 a np.linspace(1,10,10) a #array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])如果我们将 endpoint 设置为 False就不会包含 10此时默认步长是 50。 a np.linspace(1,10,endpointFalse) a #array([1. , 1.18, 1.36, 1.54, 1.72, 1.9 , 2.08, 2.26, 2.44, 2.62, 2.8 , # 2.98, 3.16, 3.34, 3.52, 3.7 , 3.88, 4.06, 4.24, 4.42, 4.6 , 4.78, # 4.96, 5.14, 5.32, 5.5 , 5.68, 5.86, 6.04, 6.22, 6.4 , 6.58, 6.76, # 6.94, 7.12, 7.3 , 7.48, 7.66, 7.84, 8.02, 8.2 , 8.38, 8.56, 8.74, # 8.92, 9.1 , 9.28, 9.46, 9.64, 9.82])2以下实例用到三个参数设置起始位置为 2.0终点为 3.0数列个数为 5。 ar1 np.linspace(2.0, 3.0, num5) ar1 #array([2. , 2.25, 2.5 , 2.75, 3. ])将参数 endpoint 设置为 False 时不包含终止值 ar1 np.linspace(2.0, 3.0, num5, endpointFalse) ar1 #array([2. , 2.2, 2.4, 2.6, 2.8])设置 retstep 显示计算后的步长 ar1 np.linspace(2.0,3.0,num5, retstepTrue) print(ar1) type(ar1) #(array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) #tuple将 endpoint 设置为 False不包含终止值再设置 retstep 显示计算后的步长 ar1 np.linspace(2.0,3.0,num5,endpointFalse,retstepTrue) ar1 #(array([2. , 2.2, 2.4, 2.6, 2.8]), 0.2)3等差数列在线性回归经常作为样本集例如生成 x_data值为 [0, 100] 之间 500 个等差数列数据集合作为样本特征根据目标线性方程 y3×x2y 3 × x 2y3×x2 生成相应的标签集合 y_data x_data np.linspace(0,100,500) x_data五、numpy.logspace() 创建等比数列 5.1 返回在间隔 [开始停止] 上计算的 num 个均匀间隔的样本。数组是一个等比数列构成。 np.logspace(start, stop, num50, endpointTrue, base10.0, dtypeNone)5.2其参数含义如下 序号参数描述说明1start必填项序列的起始值2stop必填项序列的终止值如果endpoint为true该值包含于数列中3num要生成的等步长的样本数量默认为504endpoint该值为 true 时数列中包含stop值反之不包含默认是True5baset对数 log 的底数6dtypendarray 的数据类型 5.3示例 a np.logspace(0,9,10,base2) a #array([ 1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])上述代码可以理解为 202^{0}20到292^{9}29 np.logspace(A,B,C,baseD) 中的参数分别是如下含义 A生成数组的起始值为 D 的 A 次方。 B生成数组的结束值为 D 的 B 次方。 C总共生成 C 个数。 D指数型数组的底数为 D当省略 baseD 时默认底数为 10。 1我们先使用前 3 个参数将 [1,5] 均匀分成 3 个数得到 {1,3,5}然后利用第 4 个参数 base2默认是 10使用指数函数可以得到最终输出结果21,23,252^{1},2^{3},2^{5}21,23,25 np.logspace(1,5,3,base2) #array([ 2., 8., 32.])2取得 1 到 2 之间 10 个常用对数 np.logspace(1.0,2.0,num10) #array([ 10. , 12.91549665, 16.68100537, 21.5443469 , # 27.82559402, 35.93813664, 46.41588834, 59.94842503, # 77.42636827, 100. ]上述实际上是 10110^{1}101到10210^{2}102 六、numpy.zeros() 创建全零数列 6.1创建指定大小的数组数组元素以 0 来填充。 numpy.zeros(shape, dtype float, order C)6.2其参数含义如下 序号参数描述说明1shape数组形状2dtype数据类型可选 6.3示例 1默认的数据类型是浮点数 np.zeros(5) #array([0., 0., 0., 0., 0.])2将数据类型设置为整型 np.zeros((5,), dtype int) array([0, 0, 0, 0, 0])3生成一个 2 行 2 列的全 0 数组 np.zeros((2,2)) #array([[0., 0.], # [0., 0.]])4使用 zeros_like 可以返回具有与给定数组相同的形状和类型的零数组 ar1 np.array([[1,2,3],[4,5,6]]) np.zeros_like(ar1) #array([[0, 0, 0], # [0, 0, 0]])七、np.ones() 创建一数列 ar5 np.ones(9) ar6 np.ones((2,3,4)) ar7 np.ones_like(ar3) print(ar5:,ar5) print(ar6:,ar6) print(ar7:,ar7) #ar5: [1. 1. 1. 1. 1. 1. 1. 1. 1.] #ar6: [[[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]] # # [[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]]] #ar7: [1 1 1 1 1 1 1]
http://www.tj-hxxt.cn/news/138938.html

相关文章:

  • 太原谁家网站做的好dede做购物网站
  • 西安网站建设方案优化wordpress博客付费
  • 西部数码域名网站模板做网站购买什么
  • 河南省建设注册中心网站南昌seo网站开发
  • 延吉手机网站建设开发网站如何运营维护
  • 网站自动推广软件免费公司网站备案怎么做
  • 怎么往公司网站添加有园林案例的网站
  • 做网站月收入网站开发用什么字体
  • 常州发布信息的有什么网站网络营销作业策划方案
  • wordpress建站不好用wordpress怎么设置
  • 能打开的a站广东网站设计哪家好
  • 注册网站会员有风险吗app免费软件
  • 如何建立一个带论坛的网站安徽住房和城乡建设厅官网
  • 门户网站栏目维护建设方案衡阳seo外包
  • wordpress站长工作什么专业学网页设计制作
  • 谷歌怎么做公司网站如何解析后用二级域名做网站
  • 泌阳专业网站建设注册电子邮箱免费注册
  • 镇江做网站哪家公司好做企业网站需要什么文件
  • 网站建设 网络推广广州市设计院官网
  • 护肤网站的功能设计咸宁抖音seo收费标准
  • 盐城市建设局网站网站架构设计师有哪些学校可以报考
  • 如何搭建一个个人网站哪个网站简历做的好
  • 西部数码网站助手教程网页设计师培训哪个好
  • 广州网站制作是什么漯河网站建设 千弘网络
  • 做擦边球网站会不会违法呢莱芜一中贴吧
  • 广州设计网站建设怎么修改网站后台权限
  • 自己做的网站怎么发布上如何进行网站性能优化
  • 网站seo方案策划书网站建设的方式有哪些
  • 电子政务网站建设的步骤一般为四川手机网站建设公司
  • 网站建设证书海南七星彩网站开发