1 / 15
文档名称:

NumPy使用手记.doc

格式:doc   大小:98KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

NumPy使用手记.doc

上传人:drp539608 2019/2/11 文件大小:98 KB

下载得到文件列表

NumPy使用手记.doc

文档介绍

文档介绍:Postedon2010-08-0308:45白途思阅读(699)评论(0)编辑收藏前面一个NumPy系列基本上是抄书,没有多少具体的内容。最近做实验经常使用NumPy,确实感觉到向量计算的强大。这个系列开始,我记录在使用NumPy使用中的一些具体的技巧和注意事项。1)巧用where函数 where函数是numpy的内置,也是一个非常有用的函数,提供了快速并且灵活的计算功能。deff_norm_1(data,estimate):  residule=0  forrow_indexinrange([0]):    forcolumn_indexinrange([1]):      ifdata[row_index][column_index]!=0:        residule+=(data[row_index][column_index]-estimate[row_index][column_index])**2  returnresiduledeff_norm_2(data,estimate)    returnsum(where(data!=0,(data-estimate)**2,0))这两段代码完成同样的功能,计算两个矩阵的差,然后将残差进行平方,注意,因为我需要的是考虑矩阵稀疏性,所以不能用内置的norm,函数1是我用普通的python写的,不太复杂,对于规模10*10的矩阵,,函数2使用了where函数和sum函数,这两个函数都是为向量计算优化过的,不仅简介,,快了有五倍,不仅如此,有同学将NumPy和matlab做过比较,NumPy稍快一些,这已经是很让人兴奋的结果。 本篇我们看看NumPy中最为基本的Array操作>>>fromnumpyimport*创建一个矩阵>>>a=array([[1,2,3],[4,5,6]])>>>(2,3)>>>b=arange(15);printb[0 1 2 3 4 5 6 7 8 91011121314]>>>(3,5)array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9],[10,11,12,13,14]])可以看到,A是2行3列的矩阵。通过arange方法,可以得到一个1维的数组。然后我们可以通过reshape方法改变它的维度。>>>c=zeros((4,5));printc[[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]]>>>d=ones((5,7));printd[[1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1.]]>>>e=add(c,arange(20).reshape(4,5))>>>f=dot(e,d);printf[[10. 10. 10. 10. 10. 10. 10.][35. 35. 35. 35. 35. 35. 35.][60. 60. 60. 60. 60. 60. 60.][85. 85. 85. 85. 85. 85. 85.]]使用zeros可以生成一个零矩阵。同理,用ones可以生成值全部为1的矩阵。我选择了一个4*5的矩阵e,和一个5*7的矩阵d做点乘。最后得到f矩阵。再举一个更加明显的例子:>>>a=arange(5);printa[01234]>>>b=arange(5).reshape(5,1);printb[[0][1][2][3][4]]>>>printdot(a,b)[30]点积的效果更加明显了。ndarray的几个常用属性:·shape:代表一个array的形态,是一个向量还是一个矩阵,抑或是一个更复杂的向量组。·ndim:代表这个array的维度·size:在array中拥有的元素数量·itemsize:这个array中每一个元素所需要占的字节数·nbytes:这个array的总字节数(=itemsize*size)·real:代表一个array中所有元素的实数部分·imag:同理,代表一个array中所有元素的虚数部分·flat:将这个array整理成一维的,可以索引的一系列的元素组合。它实际上是通过iterator实现的,·T:矩阵转置,同transpose()方法一些比较有用的方法:·tolist():将array转化成一个Python中的list对象·item(