第11章-科学计算库NumPy课件.pptx

上传人(卖家):三亚风情 文档编号:2430513 上传时间:2022-04-17 格式:PPTX 页数:78 大小:4.45MB
下载 相关 举报
第11章-科学计算库NumPy课件.pptx_第1页
第1页 / 共78页
第11章-科学计算库NumPy课件.pptx_第2页
第2页 / 共78页
第11章-科学计算库NumPy课件.pptx_第3页
第3页 / 共78页
第11章-科学计算库NumPy课件.pptx_第4页
第4页 / 共78页
第11章-科学计算库NumPy课件.pptx_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、第11章 科学计算库NumPy本章目录本章目录第11章 科学计算库NuPmy本章学习目标本章学习目标理解理解NumPyNumPy库特点和优势库特点和优势掌握掌握NumPyNumPy库安装方法库安装方法理解理解NumPyNumPy库常用数据类型库常用数据类型掌握掌握NumPyNumPy库数组对象创建与操作库数组对象创建与操作了解了解NumPyNumPy库矩阵的操作库矩阵的操作掌握掌握NumPyNumPy库常用方法库常用方法第11章 科学计算库NumPy思维导图思维导图Python程序设计程序设计第11章 科学计算库NumPy5 NumPyNumPy的全名为的全名为Numeric PythonNu

2、meric Python,是开源的,是开源的PythonPython科学计算库。科学计算库。 NumPyNumPy主要用来存储和处理大型矩阵,比主要用来存储和处理大型矩阵,比PythonPython自自身的嵌套列表(身的嵌套列表(nested list structure)nested list structure)结构更加结构更加高高效。效。 NumPyNumPy主要功能包括一个强大的主要功能包括一个强大的N N维数组对象维数组对象ndarrayndarray、更为成熟的广播函数库、以及用于整合、更为成熟的广播函数库、以及用于整合C/C+C/C+和和FortranFortran代码的工具包和

3、实用的线性代数、代码的工具包和实用的线性代数、傅里叶变换和随机数生成方法等功能。傅里叶变换和随机数生成方法等功能。Python程序设计程序设计第11章 科学计算库NumPy6 与其他编程语言相比,与其他编程语言相比,NumPyNumPy除了继承了除了继承了PythonPython结构结构简单、编写便捷的优点外,其最为突出的特点是高效简单、编写便捷的优点外,其最为突出的特点是高效的代码编写及执行效率。的代码编写及执行效率。Python程序设计程序设计第11章 科学计算库NumPy7优点编写便捷对于同样的数值计算任务,使用NumPy比直接编写Python代码便捷性能优越NumPy中的数组的存储效率

4、和输入输出性能均优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的代码高效NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多缺点处理大文件能力较差由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对大文件,例如TB级文件的处理数组通用性差NumPy数组的通用性不及Python提供的list集合。在科学计算之外的领域,NumPy的优势不明显表11-1 NumPy的优缺点Python程序设计程序设计第11章 科学计算库NumPy8 在在NumPyNumPy库安装之前,使用者

5、应确保在系统中已经正确安装过了库安装之前,使用者应确保在系统中已经正确安装过了PythonPython基基本运行环境。本节主要以本运行环境。本节主要以windowswindows操作系统系统为例介绍操作系统系统为例介绍NumPyNumPy几种常用几种常用的安装方式的安装方式: : 方法一方法一: : 使用使用Python Python 软件自带的包管理工具软件自带的包管理工具pippip进行安装。首先,在终进行安装。首先,在终端中输入命令端中输入命令: : 当终端出现当终端出现“Successfully Successfully installed installed numpynumpy”字

6、样字样numpynumpy库安装库安装成功。成功。Python程序设计程序设计第11章 科学计算库NumPy9 方法二方法二: :利用利用Anaconda Anaconda 软件在指定的虚拟环境中进行软件在指定的虚拟环境中进行NumPyNumPy 库的安装。库的安装。 首 先 要 确 保 系 统 中 成 功 安 装首 先 要 确 保 系 统 中 成 功 安 装AnacondaAnaconda,该软件包含众多常用的,该软件包含众多常用的科学计算库,其中已包含科学计算库,其中已包含 NumPyNumPy 库。因此可以通过库。因此可以通过 condaconda 命令进命令进行安装。行安装。 具体安装

7、命令为具体安装命令为:Python程序设计程序设计第11章 科学计算库NumPy10 安装完成后,可以在安装完成后,可以在PythonPython的交互式环境下导入的交互式环境下导入NumPyNumPy库进行简单测试,检验库进行简单测试,检验安装包是否安装成功。如图安装包是否安装成功。如图11-311-3所示,在所示,在pythonpython交互式运行环境中,键入交互式运行环境中,键入“import numpy as np”“import numpy as np”代码然后按回车键执行,如果控制台没有任何报错信代码然后按回车键执行,如果控制台没有任何报错信息,则表示息,则表示NumPyNumP

8、y包已安装成功可以正常使用。包已安装成功可以正常使用。图图11-3 NumPy安装测试安装测试Python程序设计程序设计第11章 科学计算库NumPy11 本节将通过一个简单的实例分别使用本节将通过一个简单的实例分别使用PythonPython原生原生代码以及代码以及NumPyNumPy代码完成一个同样的计算任务,代码完成一个同样的计算任务,通过简单对比两者运行时间以及代码的复杂度使通过简单对比两者运行时间以及代码的复杂度使读者切身体会读者切身体会NumPyNumPy代码的高效性。代码的高效性。Python程序设计程序设计第11章 科学计算库NumPy12#直接使用Python原生代码实例d

9、ef multiply(n): num2 = list(range(n) num1 = list(range(1, 5*n, 5) mul = for i in range(len(a): mul.append(num2i * 2 + num1i * 3) return (mul)print(multiply(10) #运行中循环10次 输出结果输出结果:1, 217, 1335, 4105, 9277, 17601, 29827, 46705, 68985, 97417代码实例11-2具体演示了用NumPy定义一个与代码11-1功能一致的函数。Python程序设计程序设计11.1.3 Num

10、Py简单实例13#使用NumPy的代码实例import numpy as np#用numpy函数创建num1,num2,muldef pynum(n): num1 = np.arange(1, 5 * n, 5) num2 = np.arange(n) mul = num2 * 2 + num1 * 3 return(mul)print(pynum(10) #运行中没有进行循环操作 输出结果输出结果:1 217 1335 4105 9277 17601 29827 46705 68985 97417Python程序设计程序设计第11章 科学计算库NumPy14import datetime #

11、datetime模块提供了用于以简单或复杂的方式操作日期和时间的类dt = datetime.datetime.now()multiply(10000)dtend = datetime.datetime.now()-dtprint(Python程序运行时间:,dtend.total_seconds()*1000,毫秒)dt1 = datetime.datetime.now()pynum(10000)dtend1 = datetime.datetime.now()-dt1print(NumPy程序运行时间:,dtend1.total_seconds()*1000,毫秒)输出结果输出结果:Pyth

12、on程序运行时间: 16.905 毫秒NumPy程序运行时间: 0.599 毫秒Python程序设计程序设计11.1.3 NumPy简单实例15 上述实例测试了当给定参数上述实例测试了当给定参数n n为为1000010000时,两种方时,两种方法的实际运行时间比较。由执行结果可以明显看法的实际运行时间比较。由执行结果可以明显看出,使用出,使用PythonPython原生代码程序的运行时间远远大原生代码程序的运行时间远远大于使用于使用NumPyNumPy编写代码程序的运行时间。由此可以编写代码程序的运行时间。由此可以看出,看出,NumPyNumPy不仅代码的编写效率高,而且代码执不仅代码的编写效

13、率高,而且代码执行效率也远高于行效率也远高于PythonPython。Python程序设计程序设计第11章 科学计算库NumPy16 本节将开始学习本节将开始学习NumPyNumPy最常用的对象最常用的对象数组数组,NumPyNumPy数组是一个多维数组数组是一个多维数组对象,称为对象,称为ndarrayndarray。 本节中首先将着重介绍数组的生成及其相关操作,然后再通过代码使读者本节中首先将着重介绍数组的生成及其相关操作,然后再通过代码使读者快速掌握快速掌握NumPyNumPy数组的一般用法。数组的一般用法。Python程序设计程序设计第11章 科学计算库NumPy17 整型整型 浮点型

14、浮点型 复数型复数型u PythonPython语言原生支持的常用数据类型语言原生支持的常用数据类型 为了满足对科学计算精度的不同要求,为了满足对科学计算精度的不同要求,NumPyNumPy提供了不同提供了不同精度的数据类型。并且为提升数据处理效率,不同数据类型所精度的数据类型。并且为提升数据处理效率,不同数据类型所占用的内存空间也不尽相同。占用的内存空间也不尽相同。Python程序设计程序设计第11章 科学计算库NumPy18类型描述Bool用一位存储的布尔类型(值为TRUE或FALSE)Int由所在平台决定其精度的整数(一般为int32或int64)int8整数,范围为128至127 in

15、t16整数,范围为32,768至32,767 int32整数,范围为231至2311 int64整数,范围为263至263-1 uint8无符号整数,范围为0至255 uint16无符号整数,范围为0至65535 uint32无符号整数,范围为0至2321 uint64无符号整数,范围为0至2641 float16半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数float32单精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数float64双精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数complex64复数,分别用两

16、个32位浮点数表示实部和虚部complex128复数,分别用两个64位浮点数表示实部和虚部表11-2 NumPy中的常用数据类型Python程序设计程序设计第11章 科学计算库NumPy19 表表11-211-2列举了列举了NumPyNumPy常用的数据类型,其支持的数据范围比常用的数据类型,其支持的数据范围比PythonPython原生数据类型更具广泛性。原生数据类型更具广泛性。 NumPyNumPy支持的这些数据类型之间也可以非常容易进行相互转换。支持的这些数据类型之间也可以非常容易进行相互转换。 在实际编程中,在实际编程中,NumPyNumPy为每一种数据类型均提供了与其对应的同为每一种

17、数据类型均提供了与其对应的同名类型转换函数。名类型转换函数。Python程序设计程序设计第11章 科学计算库NumPy20import numpy as npa = np.float64(23)print(整数转化为浮点数:,a)b = np.int8(9.0)print(浮点数转化为整数:,b)c = np.bool(2)print(整数转化为布尔类型数据:,c)d = np.bool(2.0)print(浮点数转化为布尔类型数据:,d) 输出结果输出结果:整数转化为浮点数: 23.0浮点数转化为整数: 9整数转化为布尔类型数据: True浮点数转化为布尔类型数据: TruePython程序

18、设计程序设计第11章 科学计算库NumPy21 值得注意的是,并不是所有的值得注意的是,并不是所有的NumPyNumPy数据类型都可以直接进行转换。例如数据类型都可以直接进行转换。例如复数数据复数数据类型不能转换成其他类型类型不能转换成其他类型。 当对不支持的数据类型进行转换时,当对不支持的数据类型进行转换时,PythonPython运行环境会有相应的运行环境会有相应的出错提示出错提示,如代,如代码实例码实例11-511-5所示。所示。import numpy as np Int(42.0 + 1.j) 输出结果输出结果:TypeError Traceback (most recent cal

19、l last) in ()- 1 Int(42.0 + 1.j)TypeError: cant convert complex to intPython程序设计程序设计第11章 科学计算库NumPy22 上述实例上述实例试图将复数试图将复数42.0+1j42.0+1j转换成整数,转换成整数,PythonPython运行环境提示运行环境提示“TypeErrorTypeError: cant convert complex to : cant convert complex to intint”错误信息,即表明复数不错误信息,即表明复数不能通过简单的改变参数值转换成整数。能通过简单的改变参数值转换

20、成整数。 除了上述通过同名数据类型函数实现类型间的转换,除了上述通过同名数据类型函数实现类型间的转换,NumPyNumPy同时也提供了一同时也提供了一种更为灵活的实现方式,即通过种更为灵活的实现方式,即通过dtypedtype参数值参数值显示控制生成数据的数据类型。显示控制生成数据的数据类型。代码实例代码实例11-611-6演示了使用演示了使用dtypedtype参数控制生成参数控制生成float32float32类型的数据变量。类型的数据变量。Python程序设计程序设计第11章 科学计算库NumPy23import numpy as npa = np.arange(3, dtype = n

21、p.float32)print(“a = ”, a)print(type=, type(a0)输出结果输出结果:a= 0. 1. 2.type= 上述实例创建了一个含有上述实例创建了一个含有3 3个元素的数组,并通过设定个元素的数组,并通过设定dytpedytpe的参数值为的参数值为float32float32显示指明数据类型。根据表显示指明数据类型。根据表11-211-2可知此类型是单精度浮点数(可知此类型是单精度浮点数(3232位),所以输出结果为位),所以输出结果为0.00.0、1.01.0、2.02.0。Python程序设计程序设计第11章 科学计算库NumPy24 数组是数组是Num

22、PyNumPy中最常用的数据对象,是科学计算的基中最常用的数据对象,是科学计算的基础容器。础容器。 NumPyNumPy提供了便捷的数组创建方法,其中最常用的是提供了便捷的数组创建方法,其中最常用的是使用使用arrayarray方法方法从常规的从常规的PythonPython列表或元组直接创造列表或元组直接创造数组。代码实例数组。代码实例11-711-7具体演示了用具体演示了用arrayarray方法创建数方法创建数组过程。组过程。Python程序设计程序设计第11章 科学计算库NumPy25import numpy as npa = np.array( 2,3,4 ) print(“a=”,

23、 a)print(“type=”, a.dtype) 输出结果输出结果:a= 2 3 4type= int64 以上实例通过调用以上实例通过调用NumPyNumPy的的arrayarray方法直接从列表方法直接从列表2,3,42,3,4中创建一个新的中创建一个新的数组数组a a,并且数组,并且数组a a中的数据类型以及元素个数与原列表保持完全一致。值中的数据类型以及元素个数与原列表保持完全一致。值得注意的是,使用上述方法创建数组时,通常容易犯一个得注意的是,使用上述方法创建数组时,通常容易犯一个常识性错误常识性错误是用是用多个数值参数而不是列表来调用多个数值参数而不是列表来调用arrayarr

24、ay方法。如代码实例方法。如代码实例11-811-8。Python程序设计程序设计第11章 科学计算库NumPy26import numpy as npa=np.array(1, 2, 3) 输出结果输出结果:ValueError Traceback (most recent call last) in ()- 1 a=np.array(1, 2, 3)ValueError: only 2 non-keyword arguments accepted 当试图直接使用三个整数创建数组当试图直接使用三个整数创建数组a a时,时,PythonPython运行环境会提示运行环境会提示“ValueErr

25、orValueError: only 2 non-: only 2 non-keyword arguments accepted”keyword arguments accepted”。即即arrayarray将每个数当成了参数,因将每个数当成了参数,因此此必须将列表或元组做为一个整体必须将列表或元组做为一个整体传递给传递给arrayarray函数函数。Python程序设计程序设计第11章 科学计算库NumPy27 数组作为数组作为NumPyNumPy最常用的数据最常用的数据对象,在对象,在NumPyNumPy中也可以通过中也可以通过dtypedtype参数进行显示指定数组参数进行显示指定数组

26、的数据型,如代码实例的数据型,如代码实例11-911-9所所示。示。c = array( 1, 2, 3, 4 , dtype=complex )print(“c=”, c) 输出结果输出结果:c=(1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j)Python程序设计程序设计第11章 科学计算库NumPy28 上述代码创建一个二维数组并通过指定上述代码创建一个二维数组并通过指定dtypedtype参数值为参数值为“complex”“complex”来显示来显示说明创建的是一个数据类型为复数的数组。说明创建的是一个数据类型为复数的数组。 此外,为了使用方便此外,为了使用方便NumP

27、yNumPy也提供了一些创建特定数组的方法,其中较也提供了一些创建特定数组的方法,其中较为常用的是以下三种:为常用的是以下三种: zeroszeros()()方法、方法、 ones()ones()方法方法 和和empty()empty()方法。方法。Python程序设计程序设计第11章 科学计算库NumPy29表11-3 三种方法的公共参数参数描述shape数组形状dtype数据类型,可选order有C和F两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序 代码实例代码实例11-1011-10演示了利用演示了利用zeroszeros()()、ones()ones()和和empt

28、y()empty()三种方法创建三种方法创建不同形式的数组。不同形式的数组。Python程序设计程序设计第11章 科学计算库NumPy30import numpy as npx = np.zeros(3, 4) #创建元素全为0的多维数组print (“x=”, x)y = np.ones( (2, 3, 4), dtype=int16 ) #创建元素全为1的多维数组print (“y=”, y)z = np.empty(3, 2), dtype = int) #创建元素全未初始化的多维数组print (“z=”, z) 输出结果输出结果:x= 0. 0. 0. 0. 0. 0. 0. 0.

29、0. 0. 0. 0.y= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1z= 281479271743489 281479271743489 281479271743489 281479271743489 281479271743489 281479271743489Python程序设计程序设计第11章 科学计算库NumPy31 NumPyNumPy数组最基本、最常用的两个属性是:数组最基本、最常用的两个属性是:shapeshape和和dtypedtype。表11-4 数组的其它属性属性名称功能ndim数组的维数或数组轴的个数size数组元素的

30、总个数itemsize数组中元素在内存中所占的字节数nbytes整个数组所占的存储空间,其值是itemsize和size属性值的乘积。real复数数组的实部。如果数组中只包含实数元素,则其real属性将输出原数组。imag复数数组的虚部。 Python程序设计程序设计第11章 科学计算库NumPy32 可用可用 . 形式的代码访问这些属性值,如代码实例形式的代码访问这些属性值,如代码实例11-11-1111所示。所示。import numpy as np a = np.arange(24) #创建包含有24个元素的一维数组print (“数组a的维度:”, a.ndim)b = a.resha

31、pe(2, 4, 3) #更改一维数组为三维数组print (“数组b的维度:”, b.ndim)输出结果输出结果:数组a的维度: 1数组b的维度: 3Python程序设计程序设计第11章 科学计算库NumPy33 数组对象的操作方法和数组对象的操作方法和PythonPython的列表对象的操作方法相似,都可以对其中的列表对象的操作方法相似,都可以对其中元素进行元素进行索引索引或或切片切片等。等。 NumPyNumPy数组的切片操作也可以通过数组下标索引来完成,如代码实例数组的切片操作也可以通过数组下标索引来完成,如代码实例11-1211-12所示。所示。a = arange(10) #生成一

32、个长度为10的序列数组print(“a=”, a) #打印数组中所有的元素值print(a3 : 6) #对数组a进行切片操作 输出结果输出结果:a=0 1 2 3 4 5 6 7 8 93, 4, 5Python程序设计程序设计第11章 科学计算库NumPy34 除了常用的单步切片外除了常用的单步切片外NumPyNumPy数组提供了更为灵活的多步切片方式,即按一数组提供了更为灵活的多步切片方式,即按一定步数间隔取值。代码实例定步数间隔取值。代码实例11-1311-13具体演示了用特定步数进行数组切片。具体演示了用特定步数进行数组切片。a = arange(10) #生成一个长度为10的序列数

33、组print(a: 7 : 2) 输出结果输出结果:0, 2, 4, 6Python程序设计程序设计第11章 科学计算库NumPy35 数组使用过程中经常需要打印数组使用过程中经常需要打印其元素值,其元素值,NumPyNumPy以类似嵌套以类似嵌套列表的形式打印显示数组元素列表的形式打印显示数组元素值。值。 右侧右侧代码实例代码实例11-1411-14具体演示具体演示了不同维度数组的布局。了不同维度数组的布局。a = arange(6) #一维数组b = arange(12).reshape(4, 3) #二维数组c = arange(24).reshape(2, 3, 4) #三维数组pri

34、nt(“a=”, a)print(“b=”, b)print(“c=”, c)输出结果输出结果:a=0, 1, 2, 3, 4, 5b= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11c= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)Python程序设计程序设计第11章 科学计算库NumPy36 在实际应用中数组的形状并不是固定的不变的,常常会遇到在实际应用中数组的形状并不是固定的不变的,常常会遇到动态改变数组动态改变数组形状形状的情况,的情况,

35、NumPyNumPy库提供了形式多样的方法来满足实际需求。表库提供了形式多样的方法来满足实际需求。表11-511-5给出给出了改变数组形状的一些常用的方法。了改变数组形状的一些常用的方法。Python程序设计程序设计第11章 科学计算库NumPy37表11-5 改变数组形状的常用方法名称作用备注shapereshape可直接修改数组形状都没有括号,前者改变后会改变原来数组形状,后者不会newaxis增加数组维数根据插入位置的不同,可以返回不同形状的数组squeeze去除多余的轴squeeze返回一个将所有长度为1的维度去除的新数组a.transpose()a.T数组转置转置可以作用于多维数组转

36、置返回的是对原数组的另一种view,所以改变转置会改变原来数组的值concatenate(a0,a1,.,aN), axis=0)数组连接默认沿着第一维进行连接Vstack沿着第一维Hstack沿着第二维Dstack连接成三维Flattenravel将多维数组转化为1维数组b=a.flatten()b=a.ravel()前者修改b会改变a,后者不会atleast_xd保证数组至少有x维x可以取值 1,2,3Python程序设计程序设计第11章 科学计算库NumPy38 上表展示了常用改变数组形状的方法,其中数组形状的表达方法是由沿每上表展示了常用改变数组形状的方法,其中数组形状的表达方法是由沿

37、每条轴的元素数量决定的,括号中每一个数值代表其所在轴上元素的个数,条轴的元素数量决定的,括号中每一个数值代表其所在轴上元素的个数,代码实例代码实例11-1511-15演示了创建一个三行四列的随机数组。演示了创建一个三行四列的随机数组。import numpy as np a = np.floor(10*np.random.random(3, 4)print(“a=”, a)print(“多维数组a形状:”, a.shape) 输出结果输出结果:a=(7., 1., 6., 3., 9., 5., 7., 4., 2., 5., 0., 8.)多维数组a形状:(3, 4)Python程序设计程序

38、设计第11章 科学计算库NumPy39import numpy as np a = np.floor(10*np.random.random(3, 4)b = a.ravel( )print(“b=”, b)print(“多维数组b形状:”, b.shape)print( “多维数组a经转换得:”, a.reshape(6, 2)print( “多维数组a经转置得:”, a.T() 输出结果:输出结果:b=7., 1., 6., 3., 9., 5., 7., 4., 2., 5., 0., 8.多维数组b形状:(12,)多维数组a经转换得:7., 1., 6., 3., 9., 5., 7.

39、, 4., 2., 5., 0., 8.多维数组a经转置得:7., 9., 2., 1., 5., 5., 6., 7., 0., 3., 4., 8. 代码实例代码实例11-1611-16演示了演示了利用利用NumPyNumPy的数组操纵的数组操纵方法来动态改变数组方法来动态改变数组形状、对数组进行转形状、对数组进行转置操作。置操作。Python程序设计程序设计第11章 科学计算库NumPy40print( “a=”a) #此处数组为代码实例11-15所创建的(3,4)数组a.resize(2,6)print(“resize变形后:”, a) 输出结果:输出结果:a=7, 1, 6, 3,

40、9, 5, 7, 4, 2, 5, 0, 8resize变形后::(7, 1, 6, 3, 9, 5, 7, 4, 2, 5, 0, 8) 代码实例代码实例11-1711-17使用使用resizeresize方法改变数组形状。方法改变数组形状。Python程序设计程序设计第11章 科学计算库NumPy41a.reshape(4,-1) #改变数组形状的任一维度参数为-1时,数组维度会被自动计算。print(“reshape变形后:”, a) 输出结果:输出结果:reshape变形后(7, 1, 6, 3, 9, 5, 7, 4, 2, 5, 0, 8)代码实例代码实例11-1811-18使用使

41、用reshapereshape方法改变数组形状。方法改变数组形状。Python程序设计程序设计第11章 科学计算库NumPy42 水平组合指矩阵的行数不变,按列组合。水平组合指矩阵的行数不变,按列组合。 垂直组合指矩阵的列数不变,按行组合。垂直组合指矩阵的列数不变,按行组合。 深度组合指矩阵的行和列均组合。深度组合指矩阵的行和列均组合。 NumpyNumpy除了提供对单个数组形状重塑的方法外,还提供了多种数组组除了提供对单个数组形状重塑的方法外,还提供了多种数组组合方式的函数。合方式的函数。Python程序设计程序设计第11章 科学计算库NumPy43 NumPyNumPy数组的维数称为秩(数

42、组的维数称为秩(rankrank),一维数组的秩为),一维数组的秩为1 1,二维数组的秩为二维数组的秩为2 2,以此类推。,以此类推。 对多维数组的组合操作离不开一个重要的参数对多维数组的组合操作离不开一个重要的参数axisaxis。 NumpyNumpy的大部分数组变形和组合方法使用的大部分数组变形和组合方法使用 axis axis参数控制参数控制沿轴操作。沿轴操作。 代码实例代码实例11-1911-19创建了两个不同的数组,接下来将使用创建了两个不同的数组,接下来将使用创建的两个数组演示不同的数组组合方法。创建的两个数组演示不同的数组组合方法。Python程序设计程序设计第11章 科学计算

43、库NumPy44a = arange(9).reshape(3, 3) #创建一些数组print(“a=”, a) 输出结果输出结果:a=0, 1, 2, 3, 4, 5, 6, 7, 8) b = 2 * a print(“b=”, b) b= 0, 2, 4, 6, 8, 10, 12, 14,16) Python程序设计程序设计第11章 科学计算库NumPy45 NumPyNumPy提供了不同方向的数组组合方法,分别是提供了不同方向的数组组合方法,分别是水平组合水平组合、垂直组合垂直组合、深度组合深度组合。1.1.水平组合的应用水平组合的应用 水平组合将多维数组对象构成的元组作为水平组合

44、将多维数组对象构成的元组作为参数,传给参数,传给hstackhstack函数,函数,concatenateconcatenate函函数可以实现同样的效果。代码实例数可以实现同样的效果。代码实例11-2011-20演示了数组不同的水平组合方法。演示了数组不同的水平组合方法。Python程序设计程序设计第11章 科学计算库NumPy46print(“水平组合:”, hstack(a, b) print(“水平组合:”, concatenate(a, b), axis=1) 输出结果输出结果:水平组合: 0, 1, 2, 0, 2, 4, 3, 4, 5, 6, 8,10, 6, 7, 8,12,1

45、4,16水平组合: 0, 1, 2, 0, 2, 4, 3, 4, 5, 6, 8,10, 6, 7, 8,12,14,16Python程序设计程序设计第11章 科学计算库NumPy47 垂直组合函数名为垂直组合函数名为vstackvstack,列数,列数不变,将参数中的数组依次组合。不变,将参数中的数组依次组合。码实例码实例11-2111-21演示了数组的垂直组演示了数组的垂直组合。合。print(“垂直组合:”, vstack(a, b)print(“垂直组合:”, concatenate(a,b), axis=0) 输出结果输出结果:垂直组合:( 0, 1, 2, 3, 4, 5, 6,

46、 7, 8, 0, 2, 4, 6, 8,10, 12,14,16)垂直组合:( 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 4, 6, 8,10, 12,14,16)Python程序设计程序设计第11章 科学计算库NumPy48 将将a,ba,b作为参数传给深度作为参数传给深度组合函数组合函数dstackdstack完成数完成数组组a,ba,b的深度组合。所谓的深度组合。所谓深度组合,就是将一系深度组合,就是将一系列数组中的相同位置元列数组中的相同位置元素按列进行组合。代码素按列进行组合。代码实例实例11-2211-22演示了数组的演示了数组的深度组合。深度组合。pri

47、nt(“深度组合:”,dstack(a, b) 输出结果输出结果:深度组合:0, 0, 1, 2, 2, 4, 3, 6, 4, 8, 5,10,6,12, 7,14, 8,16) Python程序设计程序设计第11章 科学计算库NumPy49 矩阵(矩阵(MatrixMatrix)是一个按照长方阵列排列的)是一个按照长方阵列排列的复数复数或或实数实数集合。集合。NumPyNumPy库中存在两种不同的表库中存在两种不同的表达矩阵的对象达矩阵的对象。 矩阵对象矩阵对象matrixmatrix 数组对象数组对象NdarrayNdarray。Python程序设计程序设计第11章 科学计算库NumPy

48、50NumPyNumPy中数组相关对象均为中数组相关对象均为NdarrayNdarray。NumPyNumPy库为多维数库为多维数组提供了许多便捷的方法。组提供了许多便捷的方法。表表11-611-6展示了多维展示了多维ndarrayndarray对象的常用方法。对象的常用方法。Python程序设计程序设计第11章 科学计算库NumPy51表11-6 多维ndarray对象的常用方法方法名称功能max(axis)返回根据指定的axis计算最大值argmax(axis)返回根据指定axis计算最大值的索引.min(axis)返回根据指定的axis计算最小值argmin(axis)返回根据指定axi

49、s计算最小值的索引ptp(axis)返回根据指定axis计算最大值与最小值的差clip(min, max)返回数组元素限制在min, max之间的新数组 sum(axis)根据指定axis计算数组的和,默认求所有元素的和mean(axis)根据指定axis计算数组的平均值var(axis)根据指定的axis计算数组的方差std(axis)根据指定axis计算数组的标准差all(axis)根据指定axis判断所有元素是否全部为真Python程序设计程序设计第11章 科学计算库NumPy52 多维多维NdarrayNdarray对象存在着完善的对象存在着完善的广播机制广播机制。 所谓广播机制机制的

50、功能是为了方便不同所谓广播机制机制的功能是为了方便不同shapeshape的的NdarrayNdarray进行数学运算,较小的阵列进行数学运算,较小的阵列( (甚至是单独标量甚至是单独标量)“)“广播广播”到到较大阵列上,使它们对等以可以进行数学计算。较大阵列上,使它们对等以可以进行数学计算。 广播提供了一种阵列化的操作方式,因此不需要像广播提供了一种阵列化的操作方式,因此不需要像C C一样一样通过循环进行计算。广播操作不需要数据复制,通常执行通过循环进行计算。广播操作不需要数据复制,通常执行效率非常高。效率非常高。Python程序设计程序设计第11章 科学计算库NumPy53data = a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第11章-科学计算库NumPy课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|