资源描述:
《科学计算与数据处理课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NumPy——快速处理数据1NumPy—ndarray对象2目录NumPy的导入创建数组存取元素多维数组结构数组3NumPy的导入标准的Python中用列表(list)保存一组值,可以当作数组使用。但由于列表的元素可以是任何对象,因此列表中保存的是对象的指针。对于数值运算来说,这种结构显然比较浪费内存和CPU计算Python提供了array模块,它和列表不同,能直接保存数值,但是由于它不支持多维数组,也没有各种运算函数,因此也不适合做数值运算。4NumPy的导入NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(n-dimensio
2、nalarrayobject)和ufunc(universalfunctionobject)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。函数库的导入importnumpyasnp5创建数组在IPython中输入函数名并添加一个“?”符号,就可以显示文档内容。例如,输入“np.array?”可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组(下例中的变量c):6创建数组>>>a=np.array([1,2,3,4])>>>b=np.array((
3、5,6,7,8))>>>c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])>>>barray([5,6,7,8])>>>carray([[1,2,3,4],[4,5,6,7],[7,8,9,10]])>>>c.dtype#数组的元素类型可以通过dtype属性获得dtype('int32')7创建数组数组的大小可以通过其shape属性获得:可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。>>>a.shape#一维数组(4,)>>>c.shape#二维数组其中第0轴的长度为3,第1轴的长
4、度为4。(3,4)>>>c.shape=4,3#注意从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变:>>>carray([[1,2,3],[4,4,5],[6,7,7],[8,9,10]])8创建数组>>>d=a.reshape((2,2))#使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变。>>>darray([[1,2],[3,4]])>>>aarray([1,2,3,4])>>>c.shape=2,-1#当某个轴的元素为-1时,将根据数组元素的个数自动计算此
5、轴的长度,因此下面的程序将数组c的shape改为了(2,6)。>>>carray([[1,2,3,4,4,5],[6,7,7,8,9,10]])9创建数组数组a和d其实共享数据存储内存区域,因此修改其中任意一个数组的元素都会同时修改另外一个数组。>>>a[1]=100#将数组a的第一个元素改为100>>>d#注意数组d中的2也被改变了array([[1,100],[3,4]])10创建数组数组的元素类型可以通过dtype属性获得。可以通过dtype参数在创建时指定元素类型:>>>np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]]
6、,dtype=np.float)array([[1.,2.,3.,4.],[4.,5.,6.,7.],[7.,8.,9.,10.]])>>>np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=np.complex)array([[1.+0.j,2.+0.j,3.+0.j,4.+0.j],[4.+0.j,5.+0.j,6.+0.j,7.+0.j],[7.+0.j,8.+0.j,9.+0.j,10.+0.j]])11创建数组上面的例子都是先创建一个Python序列,然后通过array函数将其转换为数组,这样做显然效率不高
7、。因此NumPy提供了很多专门用来创建数组的函数。•arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值:>>>np.arange(0,1,0.1)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])12创建数组•linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:>>>np.linspace(0,1,10)#步长为1/9array([0.,0.11111111,0.222222
8、22,0.33333333,0.444