资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
Python 中的 Numpy 入门教程这篇文章主要介绍了 Python 中的 Numpy 入门教程,着重讲解了矩阵中的数组操作,需要的朋友可以参考下1、Numpy 是什么很简单,Numpy 是 Python 的一个科学计算的库,提供了矩阵运算的功能,其一般与 Scipy、matplotlib 一起使用。其实,list 已经提供了类似于矩阵的表示形式,不过 numpy 为我们提供了更多的函数。如果接触过 matlab、scilab,那么 numpy 很好入手。 在以下的代码示例中,总是先导入了 numpy:复制代码代码如下: import numpy as np print np.version.version1.6.22、多维数组多维数组的类型是:numpy.ndarray。使用 numpy.array 方法以 list 或 tuple 变量为参数产生一维数组:复制代码代码如下: print np.array(1,2,3,4)1 2 3 4 print np.array(1.2,2,3,4) 1.2 2. 3. 4. print type(np.array(1.2,2,3,4)以 list 或 tuple 变量为元素产生二维数组:复制代码代码如下: print np.array(1,2,3,4)1 23 4生成数组的时候,可以指定数据类型,例如 numpy.int32, numpy.int16, and numpy.float64 等:复制代码代码如下: print np.array(1.2,2,3,4), dtype=np.int32)1 2 3 4使用 numpy.arange 方法复制代码代码如下: print np.arange(15) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 print type(np.arange(15) print np.arange(15).reshape(3,5) 0 1 2 3 4 5 6 7 8 910 11 12 13 14 print type(np.arange(15).reshape(3,5)使用 numpy.linspace 方法例如,在从 1 到 3 中产生 9 个数:复制代码代码如下: print np.linspace(1,3,9) 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75 3. 使用 numpy.zeros,numpy.ones,numpy.eye 等方法可以构造特定的矩阵例如:复制代码代码如下: print np.zeros(3,4) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. print np.ones(3,4) 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. print np.eye(3) 1. 0. 0. 0. 1. 0. 0. 0. 1.创建一个三维数组:复制代码代码如下: print np.zeros(2,2,2) 0. 0. 0. 0. 0. 0. 0. 0.获取数组的属性:复制代码代码如下: a = np.zeros(2,2,2) print a.ndim #数组的维数3 print a.shape #数组每一维的大小(2, 2, 2) print a.size #数组的元素数8 print a.dtype #元素类型float64 print a.itemsize #每个元素所占的字节数8数组索引,切片,赋值示例:复制代码代码如下: a = np.array( 2,3,4,5,6,7 ) print a2 3 45 6 7 print a1,27 print a1,:5 6 7 print a1,1:26 a1,: = 8,9,10 print a 2 3 4 8 9 10使用 for 操作元素复制代码代码如下: for x in np.linspace(1,3,3):. print x.1.02.03.0基本的数组运算先构造数组 a、b:复制代码代码如下: a = np.ones(2,2) b = np.eye(2) print a 1. 1. 1. 1. print b 1. 0. 0. 1.数组的加减乘除:复制代码代码如下: print a 2False FalseFalse False print a+b 2. 1. 1. 2. print a-b 0. 1. 1. 0. print b*2 2. 0. 0. 2. print (a*2)*(b*2) 4. 0. 0. 4. print b/(a*2) 0.5 0. 0. 0.5 print (a*2)*4 16. 16. 16. 16.使用数组对象自带的方法:复制代码代码如下: a.sum()4.0 a.sum(axis=0) #计算每一列(二维数组中类似于矩阵的列)的和array( 2., 2.) a.min()1.0 a.max()1.0使用 numpy 下的方法:复制代码代码如下: np.sin(a)array( 0.84147098, 0.84147098, 0.84147098, 0.84147098) np.max(a)1.0 np.floor(a)array( 1., 1., 1., 1.) np.exp(a)array( 2.71828183, 2.71828183, 2.71828183, 2.71828183) np.dot(a,a) #矩阵乘法array( 2., 2., 2., 2.)合并数组使用 numpy 下的 vstack 和 hstack 函数:复制代码代码如下: a = np.ones(2,2) b = np.eye(2) print np.vstack(a,b) 1. 1. 1. 1. 1. 0. 0. 1. print np.hstack(a,b) 1. 1. 1. 0. 1. 1. 0. 1.看一下这两个函数有没有涉及到浅拷贝这种问题:复制代码代码如下: c = np.hstack(a,b) print c 1. 1. 1. 0. 1. 1. 0. 1. a1,1 = 5 b1,1 = 5 print c 1. 1. 1. 0. 1. 1. 0. 1.可以看到,a、b 中元素的改变并未影响 c。深拷贝数组数组对象自带了浅拷贝和深拷贝的方法,但是一般用深拷贝多一些:复制代码代码如下: a = np.ones(2,2) b = a b is aTrue c = a.copy() #深拷贝 c is aFalse基本的矩阵运算转置:复制代码代码如下: a = np.array(1,0,2,3) print a1 02 3 print a.transpose()1 20 3迹:复制代码代码如下: print np.trace(a)4numpy.linalg 模块中有很多关于矩阵运算的方法:复制代码代码如下: import numpy.linalg as nplg特征值、特征向量:复制代码代码如下: print nplg.eig(a)(array( 3., 1.), array( 0. , 0.70710678, 1. , -0.70710678)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号