第14章 科学计算和可视化应用.ppt
《第14章 科学计算和可视化应用.ppt》由会员分享,可在线阅读,更多相关《第14章 科学计算和可视化应用.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第14章 科学计算和可视化应用第第14章章 科学计算和可视化应用科学计算和可视化应用主讲主讲 夏敏捷夏敏捷计算机学院副教授计算机学院副教授科学计算和可视化应用 NumPy是非常有名的Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。 Matplotlib是Python的2D&3D绘图库,它提供了一整套和MATLAB相似的命令API,十分适合交互式地进行绘图和可视化,我们处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线时,Matplotlib是个很好的类库,具有比PIL更强大的绘图功能。NumPy 可以从免费下载
2、其主要功能如下:ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具以及用于操作内存映射文件的工具。线性代数、随机数生成以及傅里叶变换功能。用于集成由C、C+、Fortran等语言编写的代码的工具。14.1 Numpy库的使用库的使用14.1.1 Numpy数组 NumPy库中处理的最基础数据类型是同种元素构成的数组(ndarray)。NumPy数组是一个多维数组对象,称为ndarray。 NumPy数组的下标从0开始。 同一个NumPy数组中所有元素的类型必须是相同的。14.1.1 Nu
3、mpy数组2 2创建创建NumpyNumpy数组数组可以使用array函数从常规的Python列表和元组创造数组。 from numpy import * a = array( 2,3,4 )可使用双重序列来表示二维的数组,三重序列表示三维数组,以此类推。 b = array( (1.5,2,3), (4,5,6) ) b array( 1.5, 2. , 3. , 4. , 5. , 6. )14.1.1 Numpy数组用函数zeros可创建一个全是0的数组,用函数ones可创建一个全为1的数组,函数empty创建一个内容随机的数组。NumPy提供2个类似range的函数返回一个数列形式的数
4、组。(1)arange函数import numpy as npnp.arange(0, 1, 0.1) #步长0.1array( 0. ,0.1,0.2, 0.3,0.4, 0.5,0.6, 0.7,0.8, 0.9)(2)linspace函数通过指定开始值、终值和元素个数(默认为50)来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值: np.linspace(0, 1, 5)array( 0. , 0.25, 0.5 , 0.75, 1. )14.1.1 Numpy数组Numpy 库有一般 math 库函数的数组实现;如sin,cos,log。基本函数(三角
5、、对数、平方和立方等)的使用就是在函数前加上np.这样就能实现数组的函数计算。x=np.arange(0,np.pi/2,0.1) xarray(0. ,0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ,1.1, 1.2, 1.3, 1.4, 1.5) y=np.sin(x)array( 0.,0.09983342,0.19866933, 0.29552021,0.38941834,0.47942554, 0.56464247,0.64421769, 0.71735609,0.78332691,0.84147098, 0.89120736,0.9
6、3203909, 0.96355819,0.98544973,0.99749499)14.1.1 Numpy数组 3 3NumPyNumPy中的数据类型中的数据类型14.1.1 Numpy数组 4 4NumpyNumpy数组中的元素访问数组中的元素访问 数组切片得到的是原始数组的视图,所有修改都会直接反映到源数组。如果需要得到Numpy数组(ndanay)切片的一份副本,需要进行复制操作,比如b5:8.copy()。14.1.2 Numpy数组的算术运算Numpy数组的算术运算是按元素逐个运算。Numpy数组运算后将创建包含运算结果的新数组。import numpy as np a= np.a
7、rray(20,30,40,50) b= np.arange( 4) #相当于np.arange(0, 4) b 输出:array(0, 1, 2, 3) c= a-b c 输出:array(20, 29, 38, 47) 14.1.2 Numpy数组的算术运算 与其他矩阵语言不同,NumPy中的乘法运算符*按元素逐个计算,矩阵乘法可以使用dot函数或创建矩阵对象实现。import numpy as np A= np.array(1,1, 0,1) B= np.array(2,0, 3,4) A*B # 逐个元素相乘 array(2, 0, 0, 4) np.dot(A,B) # 矩阵相乘 a
8、rray(5, 4, 3, 4) 14.1.3 Numpy数组的形状操作1 1数组的形状数组的形状数组的形状取决于其每个轴上的元素个数。 a=np.int32(100*np.random.random(3,4) #3*4整数数组 a.shape #(3, 4)2 2更改数组的形状更改数组的形状可以用多种方式修改数组的形状:reshape() shape() 、resize()和ravel() a.ravel() # 平坦化数组 array(26, 11, 0, 41, 48, 9, 93, 38, 73, 55, 8, 81) a.resize(2,6)14.1.4 文件存取数组内容NumPy
9、提供了多种文件操作函数方便我们存取数组内容。使用数组的方法函数tofile可以方便地将数组中数据以二进制的格式写进文件。tofile输出的数据没有格式,因此用numpy.fromfile读回来的时候需要自己格式化数据: a = np.arange(0,12) a.shape = 3,4 # 改成3*4数组 aarray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) a.tofile(a.bin) b = np.fromfile(a.bin, dtype=np.int32) # 按照int32类型读入数据 b # 数据是一维的array( 0, 1, 2, 3,
10、4, 5, 6, 7, 8, 9, 10, 11) b.shape = 3, 4 # 按照a的shape修改b的shape14.1.5 Numpy中图像数组1 1获取图像数组获取图像数组当载入图像时,我们通过调用array()方法将图像转换成NumPy的数组对象。对于图像数据,下面的例子阐述了这一点:im = array(Image.open(d:test.jpg) #彩色图像print (im.shape, im.dtype)im = array(Image.open(d:test.jpg).convert(L),f) #灰度化处理print (im.shape, im.dtype)输出结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第14章 科学计算和可视化应用 14 科学 计算 可视化 应用
限制150内